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