【python算法】插入排序

 

关于插入排序,其算法的核心思想是:

将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数。即:序列的第一个元素,肯定是有序的,把第二个元素和第一个元素相比,插入到合适的位置,这样前两个元素就有序了,接着,把第三个元素插入到前面包含两个元素的有序列表中,以此类推,直至插完第n个数据。

细节说明:

将多个数字进行升序排序时,每次基于有序的列表进行插入,方法类似冒泡排序。

步骤1:非排序的一个元素s和排好序的多个数字从大到小的顺序依次进行比对,如果s比排好序的数字大,则结束比较大小的循环,意味着s作为目前最大的排好序的数字,如过小s就和比较的数字交换位置,继续进行比较。

    将列表的所有的元素都按照步骤1的逻辑完成在有序列表的插入动作,那么所有数字就成为有序列表了。

核心代码如下:
# encoding=utf-8
def insertSort(listx):
    xLen = len(listx)
    for i in xrange(1,xLen):
        j = i -1
#把listx[i] 和前面的元素进行比较,插入到合适的位置
        while j >= 0:
            if listx[j] > listx[j+1]:
                listx[j],listx[j+1] = listx[j+1],listx[j]
                j -= 1
            else:
                break
    return listx
 
if __name__ == '__main__':
    print insertSort([77,45,3,34,4,3,454,87])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值