还是排序算法

最近面试经常会碰到一些排序上的题目,所以回去之后一直在巩固这方面的知识。
对于排序算法,我们不能仅看他的效率有多高,还要观察他所占用空间大小和稳定性。

一、排序的关键因素
1、空间

In-place sort:插入排序、选择排序、冒泡排序、堆排序、快速排序。
Out-place sort:归并排序、计数排序、基数排序、桶排序。

这就说明,当数据量过大时,选择 In 排序的比较明智的,因为 Out 排序所占用的内存和空间都比较大,而 In 排序不需要。

2、稳定性
stable sort:插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序。
unstable sort:选择排序、快速排序、堆排序。

为什么稳定性这么重要?原因很简单,假如你的排序算法经常碰到一些让你耗费大量时间去排序的数据,这明显会影响整体代码运行效率。

二、九大排序算法总结
当然,下面所讲的排序算法都是未经过优化的原始方法。

1、插入排序
插入排序的最优时间数据是已排好序的时候,复杂度为O(n),最坏时间数据是倒叙的时候,负责度是O(n^2)。
而且插入排序比较适合适用少量数据的排序。

2、冒泡排序
冒泡排序的最坏时间是O(n^2),其未作处理的最优时间也是O(n^2),但是做过处理后的最优时间是O(n)。

3、选择排序
最优和最坏时间都是O(n^2),优化后最优时间是O(n)。

4、归并排序
分治法思想,最优时间 O(nlgn),最坏时间 O(nlgn)。

5、快速排序
该算法的缺点和改进方法也已经在上一篇日志里详细说过,在这就不多说了。

6、堆排序
最优时间
O(nlgn),最差时间 O(nlgn)。

7、计数排序
最优排序时间
O(n+k),最坏排序时间 O(n+k)。

8、基数排序
最优时间
O((n+k)d),最坏时间 O((n+k)d)。

9、桶排序
最优时间O(n),最坏时间O(n^2)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值