插入排序是一个对少量元素进行排序的有效算法。插入排序和很多人打牌时,整理手中的牌时的做法差不多。在开始摸牌时,我们的左手是空的,接着,一次从桌上摸起一张牌,为了找到这张牌的正确位置,我们需要把这张牌和已有的牌一一做对比。
代码实现:
def insert_sort(data):
i = 1
total = len(data)
while i < total:
current = data[i]
if current > data[i-1]:
i = i + 1
continue
else:
j = i - 1
while j >= 0:
if data[j] < current:
break
if data[j] > current:
data[j+1] = data[j]
j -= 1
data[j+1] = current
i += 1
return data
插入排序的核心思路是:
前一个位置的数字和当前位置上的数字做对比,如果当前位置大于前一个位置,那就不动,如果比前一个位置上的数字小,那就把前一个位置上的数字后移,继续做比较,直到找到当前位置上的数字的正确位置,然后赋值。
插入排序和冒泡排序的区别是,冒泡排序是相邻2个位置上的数字做对比,然后两两交换位置,插入排序是前面位置上的数字和当前位置上的数字做对比。