插入排序
思想
1 从第一元素开始进行比较
2 假设当前元素的前面的元素是有序的
3 拿当前元素与它相邻的前面的元素进行比较 记录当前元素的值,方便最后进行交换
4 如果当前元素小于与它相邻的前面的那个元素,就让前面的那个元素往后移动一位
5 如果当前元素大于与它相邻的前面的那个元素,就把当前的元素插入到与它相邻的前面的那个元素的后面
6 依次循环执行
通过python实现
# 从小到大的顺序进行排序
# 插入排序
arr=[2,12,3,5,6,7,22,24,17]
# 思想
# 1 从第一元素开始进行比较
# 2 假设当前元素的前面的元素是有序的
# 3 拿当前元素与它相邻的前面的元素进行比较 记录当前元素的值和下标,方便最后进行交换
# 4 如果当前元素小于与它相邻的前面的那个元素,就让前面的那个元素往后移动一位
# 5 如果当前元素大于与它相邻的前面的那个元素,就把当前的元素插入到与它相邻的前面的那个元素的后面
# 6 依次循环执行
# 遍历集合
for i in range(1,len(arr)): # 集合从1开始,因为第0个元素前面没有元素,所以不需要比较
currentNum=arr[i]
for j in range(i,0,-1): # 因为是从后往前进行比较,所以是从 当前的位置往前移动
if(currentNum<arr[j-1]): # 当前元素 小于它前面的 那个元素,它前面的那个元素往后移动一位
arr[j]=arr[j-1] # 元素后移动一位
else:
arr[j]=currentNum
break # 前面是有序的,所以不用在进行比较,直接结束程序
print("第{}轮的排序后的结果:".format(i),arr)
print(arr)

过程解析

动态演示
