三种基础排序(冒泡排序,选择排序,插入排序)思路整理与总结

本文没有代码,而是梳理思路,便于理解记忆

总结冒泡排序选择排序插入排序的思路,以n个数的从小到大的排序为例
说明:
1. 这里总结的思路,都是先确定较小的数,再确定较大的数
2. 总结方式为轮数以及每轮内所完成的排序工作
3. 示意图中,圆表示数字,只用箭头表示数字之间的比较,不表示其他信息,避免信息太多(个人认为三种基础排序最典型的区别就是比较的方式不同)

1. 冒泡排序

第1轮:从第n个数到第1个数,依次两两比较并执行必要的交换,完成之后,最小数据排在第一位
第2轮:从第n个数到第2个数,依次两两比较并执行必要的交换,完成之后,第二小数据排在第二位

第n-1轮:从第n个数到第n-1个数,依次两两比较并执行必要的交换,完成之后,第二大数据排在倒数第二位,同时,最大数据排在最后

2. 选择排序

用一个变量记录最小数据的位置
第1轮:第1个数依次和后面的所有数比较,变量更新为最小数据的位置,然后第1个数和记录位置的数交换,完成之后,最小数据排在第一位
第2轮:第2个数依次和后面的所有数比较,变量更新为最小数据的位置,然后第2个数和记录位置的数交换,完成之后,第二小数据排在第二位

第n-1轮:第n-1个数和最后一个数比较,变量更新为最小数据的位置,第n-1个数和记录位置的数交换,完成之后,第二大数据排在倒数第二位,同时,最大数据排在最后

3. 插入排序

(第1个数,不操作,此时,排好了一个数(相对位置))
第1轮:第2个数,和第1个数比较,如果比第1个数小,则第1个数顺移到第二位,第2个数插入(放到)第一位,完成之后,排好了两个数(相对位置)

第n-1轮:第n个数和第n-1个数比较,如果第n个数小于第n-1个数,按照末尾至开头的方向,依次比较第n个数和位置[1, n-1]之间的数,直到出现小于等于第n个数的位置t,则位置[t+1, n-1]的所有数顺移一位,变成位置[t+2, n]的数,第n个数插入(放到)位置t+1,完成之后,排好了n个数(相对位置,对于第n-1轮来说,同时也是绝对位置)

这里,每一轮的比较对象是一个数和这个数之前的所有数形成的整体,这个整体里的数已经完成排序。每一轮里,具体比较的次数不定,和数的相对大小有关。

一句话总结思路:(便于区别和记忆)

冒泡:两两比较连续数据并执行必要的交换
选择:依次比较数据和后续数据,选择恰当的位置交换
插入:依次比较数据和已排序数据,选择恰当的位置插入,其余元素顺移

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值