排序算法 (一)——基础

1.定义:

排序(sort)是将一组数据按照一定的规则来进行排列,一般按照递增或递减的顺序来进行排列,排序算法是一种基本的算法。

2.排序算法的分类

3.排序算法的优劣

如何判断排序算法的优劣:

  • 计算的复杂度:为了全面考虑,往往从最差、平均和最好三种情况进行评价。
  • 系统资源的占用:主要包括内存及其他资源的占用。一个好的排序应该占用少的内存资源。

4.排序算法的复杂度

排序方式时间复杂度空间复杂度
空间
稳定性
平均时间最好时间最坏时间
冒泡排序算法O(n^2)O(n)O(n^2)O(1)稳定排序
快速排序算法O(nlogn)O(nlogn)O(n^2)O(logn)非稳定排序
选择排序算法O(n^2)O(n^2)O(n^2)O(1)非稳定排序
堆排序算法O(nlogn)O(nlogn)O(nlogn)O(1)非稳定排序
插入排序算法O(n^2)O(n)O(n^2)O(1)稳定排序
希尔排序算法O(n^3/2) O(n^2)O(1)非稳定排序
合并排序算法O(nlogn)O(nlogn)O(nlogn)O(n)稳定排序

各种渐近时间复杂度由小到大的顺序如下:

常数阶O(1) < 对数阶O(logn) < 线性阶O(n) < 线性对数阶O(nlogn) < 平方阶O(n^2) < 立方阶O(n^3) <K次方阶O(n^k)< 指数阶O(2^n) 

5.稳定排序算法

稳定排序算法主要依照相等的关键字维持记录的相对次序来进行排序

如,对于有两个相等关键字的数据D1和D2,在待排序的数据中D1出现在D之前,在排序过后的数据中D1也在D2之前,那么这就是一个稳定排序算法。

冒泡排序、插入排序和合并排序算法都是稳定排序。

而选择排序、希尔排序、快速排序和堆排序都不是稳定排序算法。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值