插入排序
插入排序
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤2~5
下图展示了插入排序过程, 阴影项表示算法进行每次遍历时的有序子列表:

详细展示插入31的过程:

插入排序实现
def insertionSort(alist):
#index本质上是指示出了当前列表中元素的个数
for index in range(1,len(alist)):
#记录下要插入的值
currentvalue = alist[index]
#从最后一个位置开始
position = index
#依次从后向前将以排序列表中的元素与要插入的值进行比较,直到列表为空,或者当前元素大于列表中的某个元素
#这个过程还包含了列表元素向后移动的操作
while position > 0 and alist[position -1] > currentvalue:
alist[position] = alist[position -1]
position = position - 1
alist[position] = currentvalue
测试:
alist = [54,26,93,17,77,31,44,55,20]
insertionSort(alist)
print(alist)
参考:

浙公网安备 33010602011771号