python实现插入排序

插入排序

  1. 算法思想:
    插入排序(Insertion Sort)基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的,个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2).是稳定的排序方法.
    一般以待排序列第一个元素作为一个有序的序列,从第二个元素开始到最后,依次往有序序列插入,同时能够使有序序列依然保持有序,最终待排序列变为有序.

  2. 实现
    python版本 3.7.2

# 由于移动操作仅包含1次赋值,是交换操作的1/3,所以插入排序性能会比较好一些
def insertionSort(alist):
    for index in range(1, len(alist)):
    	# 从第二个元素开始到最后,第一个元素作为一开始的已经有序的序列
        currentvalue = alist[index]
        position = index

		# 索引大于等于0的情况就是到第一个值了,不用再比较了
        while position > 0 and alist[position - 1] > currentvalue:
            alist[position] = alist[position - 1]
            position = position - 1
        alist[position] = currentvalue


alist = [1, 2, 5, 4, 56, 1321, 4, 87, 64, 51, 21, 545, 22, 1]
insertionSort(alist)
print(alist)

一个可以查看排序演示和较详细介绍的网站
点我查看排序的可视化演示

如有错误还望指出

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值