前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 ># 原理

# 原理

作者头像
用户1175783
发布2021-12-24 10:02:28
3850
发布2021-12-24 10:02:28
举报

原理

代码语言:javascript
复制
定义一个同样大小数组来存方排序结果,并定义最小/最大值变量用来记录索引。
当无序集合的元素小于最小值时插入左边也就是`索引减一`的位置,
如果大于最大值则是在右边`索引加一`的位置,
其它情况按折半/直接方式插入。

原理图

暂无

实现

代码语言:javascript
复制
inputArr = [199383, 10, 34, -1,-32,-29, 4, 0, 34, 5, 4, 36, 1, 8, 123, 453, 1008]
length = len(inputArr)
sortArr = [None]*length
minIndex=maxIndex=0
sortArr[0]=inputArr[0]
print("未排序集合:{0}".format(inputArr))
for index in range(1, length):
    item=inputArr[index]
    # 小于最小值的放左边
    if(item<sortArr[minIndex]):
        minIndex=(minIndex-1+length)%length
        sortArr[minIndex]=item
        continue
    # 大于最大值的放右边
    if(item>sortArr[maxIndex]):
        maxIndex=(maxIndex+1+length)%length
        sortArr[maxIndex]=item
        continue
    # 大于最小值,小于最大值的情况需要移位插入
    else:        
        # 将最大数向后移动1位
        sortArr[(maxIndex+1+length)%length]=sortArr[maxIndex]
        # 再原来的最大数位置插入待插入的值
        sortArr[maxIndex]=item
        # 逐个向左比较,直到找到它的正确位置
        preIndex=maxIndex
        while(sortArr[preIndex]<=sortArr[preIndex-1]):
            sortArr[preIndex],sortArr[preIndex-1]=sortArr[preIndex-1],sortArr[preIndex]
            preIndex=(preIndex-1+length)%length
        maxIndex=(maxIndex+1+length)%length
print("已排序集合:{0},min:{1},max:{2}".format(sortArr,minIndex,maxIndex))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原理
  • 原理图
  • 实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档