插入排序

插入排序

思想

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)

过程解析

动态演示

posted @ 2022-04-11 23:04  黎白昼  阅读(23)  评论(0)    收藏  举报