八大排序算法的总结

10 篇文章 1 订阅
10 篇文章 0 订阅

排序算法的总结


排序算法总共有8个,每一种排序方法的思想都不相同,体现了编程解决问题的多样性,每一种排序方法都有不用的思想,从而可能有不同的时间复杂度和其他方便的区别,因此此篇来对排序算法进行一个总结
需要知道的术语:

  1. 稳定;没有排序前a的下一个数为b,当a==b时,若经过排序之后,a仍然在b的前面,则排序算法是稳定的。
  2. 不稳定:排序之后,a在b的后面,发生了位置的变化
  3. 内排序:所有的排序是在内存中完成的
  4. 外排序:所有的排序需要借助磁盘,排序时需要通过磁盘和内存的数据传输。
  5. 时间复杂度:一个算法执行时,基本操作语句的执行次数,可以简单理解为算法执行的时间
  6. 空间复杂度:运行一个程序需要的内存大小
排序算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性简单思路描述
冒泡排序O(n2)O(n)O(n2)O(1)内排序稳定两个比较,把最大的数放到后面,一直交换,知道最后
选择排序O(n2)O(n2)O(n2)O(1)内排序不稳定假设第一个值最小,遍历数组中的最小值并标记下来,遍历结束后才进行交换,然后假设第二个值最小。。。
插入排序O(n2)O(n)O(n2)O(1)内排序稳定重新引入一个空数组,依次比较之后插入到相应的位置
希尔排序O(n log n)O(n log2n)O(n log2n)O(1)内排序不稳定先进行分组,微调,最后利用插入排序算法进行排序
归并排序O(n log n)O(n log n)O(n log n)O(n)外排序稳定利用递归,先进行拆分,拆到最后进行递归合并
快速排序O(n log n)O(n log n)O(n2)O( log n)内排序不稳定假设第一个值为基准值,然后从右边开始扫描,当扫到比基准值小的数,停下,左边离开时扫描,当扫到比基准值大的停下,两者进行交换之后,将中间值放到i==j的地方
堆排序O(n log n)O(n log n)O(n log n)O(1)内排序不稳定利用二叉树的顺序存储法,将数组编程大顶堆(升序)然后把第一个元素和最后一个元素来交换
基数排序O(n*k)O(n*k)O(n*k)O(n+k)外排序稳定分别对个位数,十位数,百位数等进行排序,最后就是结果,需要二维数组来进行记录。
注:n表示数据的规模,其中k表示桶的个数。

在这里插入图片描述

记忆方法:不稳定的排序:选择希尔快速堆
不根据数据的长度变化的:选择归并堆

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值