- 应用场景
已经存在一个有序的序列,要求在已经排列好的序列中插入一个数,但是要求插入后的序列仍然有序。
- 时间复杂度 O(n^2)
- 适用于少量数据,稳定排序
直接插入排序是一种实现
def insert_sort(arr):
count = len(arr)
for i in range(1, count):
key = arr[i]
j = i - 1
while j >= 0:
if arr[j] > key:
arr[j + 1] = arr[j]
arr[j] = key
j -= 1
return arr
- 代码解读
首先设置关键值,即要插入的值,用key
表示,这里从下标为1
的地方开始,接着比较它与前一个元素,当然确保它前一个元素下标应>=0
(这就是设置while
的意义)。
如果key
大于它前一个元素的,则继续比较前一个元素,直到有序
若key
小于它前一个元素,则继续比较前一个元素,直到有序。
就这样循环下去。。。
就像是这样
图片来源于百度百科,如有侵权,请联系
这有一篇关于直观感受排序算法的文章,大家可以看看
视觉直观感受 7 种常用的排序算法