一图胜千言,插入排序的核心逻辑如下:
- 将数据分成两半,前一半是已排好序的,后一半是待排序的
- 每次取后一半中的第一个数,在已排序的一半中,逆序依次比较,找到要插入的位置
- 记录插入的位置,在最后判断是否需要插入即可
实现代码:
def insertionSort(a:list): for i in range(1,len(a)): value = a[i] insert_index = -1 for j in range(i-1,-1,-1): if value< a[j]: a[j+1] = a[j] insert_index = j else: break if insert_index !=-1: a[insert_index] = value return a
思考:
为什么插入排序比冒泡排序更常用
关键在于赋值操作,冒泡排序需要3次,而插入排序只需要1次