数据结构排序算法之插入排序(python实现)
前言
插入排序的基本思想:每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入位置。
即边插入边排序,保证子序列中随时都是排好序的。
插入排序的种类:
顺序法定位插入位置——直接插入排序
二分法定位插入位置——二分插入排序
缩小增量多遍插入排序——希尔排序
一、直接插入排序
1.基本思想
它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从前向后或从后向前扫描,找到相应位置并插入。
动图如下:
2.代码实现
代码如下(示例):
items = [10, 4, 5, 1, 3, 9, 7]
def s_insertSort(items):
item = items.copy()
number = len(items)
for i in range(0,number):
if i != 0: # i相当于哨兵,记录每次插入到第几个数,即前i-1个数已经有序,这里判定是第一次插入,不需要交换位置,所以写了一个非的条件判定
for j in range(0,i): # 从前i-1个有序数列里查找,并完成插入
if item[j] > item[i]: