算法思路
1. 从第一个元素开始,该元素可以认为已经被排序
2. 取出下一个元素,在已经排序的元素序列中从后向前扫描
3. 如果该元素(已排序)大于新元素,将该元素移到下一位置
4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5. 将新元素插入到该位置后
6. 重复步骤2~5
Python 实现
def insert_sort(numbers):
# 默认index 0 为已排序
for i in range(1, len(numbers)):
# i 为未排序的起始点
X = numbers[i]
temp = i
# 从已排序的点开始向前扫描直到index为0
for j in range(i - 1, -1, -1):
# 如果当前元素大于X, 该元素往后移一位,用temp记录其当前位置
if (numbers[j] > X):
numbers[j + 1] = numbers[j]
temp = j
else:
break
# 循环结束,将X插入到应该替换的位置temp
numbers[temp] = X
return numbers