关于排序算法的一点知识——性能比较

1、稳定排序和非稳定排序

      简单地说就是所有相等的数经过某种排序方法后,仍能保持它们在排序之前的相对次序,我们就说这种排序方法是稳定的。反之,就是非稳定的。

      插入排序、冒泡排序、二叉树排序、二路归并排序及其他线性排序是稳定的。

      选择排序、希尔排序、快速排序、堆排序是不稳定的。

2.内排序和外排序

     在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序,如插入排序、冒泡排序、快速排序、希尔排序、堆排序、归并排序、基数排序等;在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。

3、算法的时间复杂度和空间复杂度

     所谓算法的时间复杂度,是指执行算法所需要的计算工作量。

     插入排序、冒泡排序、选择排序的时间复杂性为O(n2)。其它非线形排序,如堆排序的时间复杂性为O(nlog2n)。线性排序的时间复杂性为O(n);

     所谓算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

     线性排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为O(1);

4.其它比较

    插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。反而在这种情况下,快速排序反而慢了。

    当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序。

    当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。

    当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下。宜用归并排序。

    当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。

    相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义):

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值