算法学习笔记——排序算法的总结

先简单说明每个排序的特点,记住每个排序的重点以后才不会弄混,即使忘记了代码的具体实现,也可以按照算法的思路写出代码以及计算时间复杂度和空间负责度。
1. 冒泡排序—冒“大泡”or冒“小泡” 利用两个for循环遍历数据
2. 快速排序—利用base基准数把数组分为两部分 左边小于base右边大于base 然后递归进行 直至最终排序完成
3. 选择排序—选择最大或者最小的数和一端数据进行直接交换
4. 插入排序—直接插入排序,按顺序取一个数插入到已经有序的序列中
5. 希尔排序—是插入排序堆一种,增加了一个步长的概念,假设数组长10,步长为5(step=step/2,step初始值等于数组长度),那么第一个数和第六个数进行比较交换,第二个和第七个… …交换一边完成以后,步长为2(step=step/2),那么第一个和第三个第五个第七个第九个进行比较,第二个和… …依次类推,直至step=1 进行排序。
6. 基数排序—就是按照每一位数进行排序,先找到数组最大的数有多少位(有多少位排序多少次)位数不足的数用0补齐,需要注意的是从最低位(个位)开始依次排序,放入对应的桶里,然后再对下位(十位)放入对应的桶里,但是要注意是按照上一次排好的桶由上至下的顺序遍历桶里的数字,并按顺序放入桶里。
7. 桶排序 —将数组或者序列放在一定数量的桶里,然后再对桶内数据进行排序,这里注意和基数排序的区别哦
8. 计数排序—找出数组最大的数max,最小的数min,再新建一个数组,长度为max-min+1,遍历数组,在新的数组中记录每个数出现的次数,然后按着额外数组里面记录的每个数的次数输出排好序的数组。
9. 归并排序—先排序相邻的两个两个数,然后在把数分成四个一组比较,在八个一组比较。
10. 堆排序 —利用最大堆或者最小堆(二叉树)进行排序,先把数组构建成一个最大堆(逻辑结构),然后取出堆顶的的数,并把堆的最后一个数放入堆顶,然后再重新构建最大堆,直至把所有数都取出来

平均时间复杂度
空间复杂度
是否稳定排序(相同数的相对顺序是否发生变化)
主要适用范围
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值