直接插入排序是插入排序的一种,核心思想就是将整个序列看成两部分,有序和无序,从第二个元素开始遍历,每次取出一个跟其左边那个元素比较,比左边邻居大说明不用动,比其小,就需要将该元素取出,然后遍历左半边有序序列部分,通过比较大小找出该插入的位置插之,观察代码可知,该算法的最好时间复杂度为O(n^2),空间复杂度为O(1),且是稳定性算法。该代码是我借鉴的github上别人写的,说实话,思路瞬间开阔了。
def directSort(a):
if len(a) <= 1:
return a
for i in range(1,len(a)):
while i > 0 and a[i] < a[i-1]:
a[i],a[i-1] = a[i-1],a[i]
i = i - 1
num = input("请输入数字序列,以逗号隔开:")
inputNum = num.split(',')
inputNum = [int(inputNum[i]) for i in range(len(inputNum))]
insertSort(inputNum,len(inputNum))