八大排序算法学习记录

插入排序:把当前第i个元素插入到应在的位置.为目标元素寻找位置

1.直接排序:像扑克牌一样,新建一个队列,一张一张地根据手里已有的牌排序.

2.希尔排序:先从中间对半分成两个队列,然后两个队列由前到后一对一对比排序;然后根据单双数分成两个队列,分别排序,总体所在位置不变;然后在整体排序.

选择排序:每次为第i个位置寻找合适的元素,然后放入该位置.为目标位置寻找元素

3.简单选择排序:从第一个位置开始,搜索选择最小的数放在该位置,后面以此类推.

4.堆排序:二叉树方式,类似于二分法,分为大根堆和小根堆.大根堆:通过一系列对换分别把两个主分支中最大的数放到分支顶端,然后把最大的选择到顶端后输出,再把最小的数放到顶端,.....再通过一系列对换.....,后面一次类推.

交换排序:针对每个i元素与相邻元素比较,若他们的相对顺序与目标排序顺序不同,则交换.

5.冒泡排序:每个元素,与前面相邻的元素比较,若他们的相对顺序与目标排序顺序不同,则交换.

6.快速排序:每个i元素把队列分成两截,前半都比它小,后半都比它大.方法:每次从两头寻找,若前端找到比i元素大的,就等后端找到比i元素小的然后交换,直到两端的寻找相遇,则让i与相遇点的元素交换,后面以此类推.

7.归并排序:递归合并排序,分成2个n/2个元素的子序列,然后递归排序,回溯到其子序列最多只有2个元素一组的时候对所有子序列排序,然后不断递归合并再排序.

8.基数排序:桶排序,有局限性,10个"桶"对应数字0~9,先按个位排序,再按十位排序,一次类推直到最高位.

10个数进行排序的用时排序:冒泡排序>选择排序>快速排序/插入排序>归并排序/基数排序/堆排序/希尔排序.

                                            冒泡和选择最耗时,插入排序和快速排序看情况,有时是最快的,剩下的都比较省时.

关于排序是否是稳定排序:可以假设队列中由相同值得元素,排序过后如果这两个值得前后位置一定不变,则是稳定排序.

参考文章:https://blog.csdn.net/lyhkmm/article/details/78920769

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值