插入排序
-
算法思想:
插入排序(Insertion Sort)基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的,个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^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)
一个可以查看排序演示和较详细介绍的网站
点我查看排序的可视化演示
如有错误还望指出