iOS算法总结-回顾

根据将排序记录是否全部放置在内存中,将排序分为内排序和外排序,之前讲的都是内排序,这里总结一下,内排序分为四类:插入排序、交换排序、选择排序和归并排序。前几篇介绍的7种算法分别是各种分类的代表算法:

目前还没有十全十美的排序算法,即使是快速排序法,也只是在整体性能上优越,它也存在排序不稳定、需要大量辅助空间、对少量数据排序无优势等不足。这里我们就来从多个角度来剖析一下提到的各种排序的长与短。

我们将7种算法的各种指标进行对比:

从算法的简单性来看,分为两类:

  • 简单算法:冒泡、选择、插入。
  • 改进算法:希尔、堆、归并、快速。

平均情况: 显然最后3种改进算法要胜过希尔排序,并远远胜超过前3种简单算法,所以堆、归并、快速算法要好一点。

最好情况:冒泡和插入排序要更胜一筹,如果你的待排序序列总是基本有序,你就考虑这两种算法。

最坏情况:堆排序和归并排序又强于快速排序以及其他简单排序。

空间复杂度: 归并排序和快速排序就比较消耗内存。所以不要选择归并排序和快速排序。

稳定性: 归并排序 独占鳌头。

待排序记录的个数: 待排序的个数n越少,采用简单排序方法越合适,反之,n越大,采用改进排序方法越合适。至于n多少比较合适,目前还没有定义。

从表中看,似乎选择排序在3种简单排序中性能最差,其实也不完全是,比如,如果比较的关键字信息量比大,比较次数比较多,这样移动记录所花费的时间也就越多,我们给出3种简单排序算法的移动次数比较:

你会发现选择排序就非常有优势,原因在于它是通过大量比较后选择明确记录进行移动,有的放矢。因此对于数量不是很大而比较需求比较大的时候,选择排序算法是占优的。另外,记录的关键信息量大小对那四个改进算法影响不大。

总之,从指标来看,快速排序是性能最好的排序算法,如果求稳定的话,建议选择归并排序

上一篇:iOS算法总结-快速排序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,600评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,092评论 0 15
  • 作者:大海里的太阳原文地址:http://www.cnblogs.com/wxisme/ 前言 查找和排序算法是算...
    IT程序狮阅读 7,263评论 0 63
  • 在我转身的那一瞬间,一阵鼻酸,手扶梯变得那么长,人来人往。尽力往上看,怕眼泪落下来。我是难过你的离开,还是为自己难...
    氧_氧气的氧阅读 1,513评论 1 1
  • 人物介绍 六(6)小队 一个性格迥异的小团体,来自某某小学六(6)班,怪咖命定魔法队。 夕颜 美丽温柔善良的大姐姐...
    永远的超级六班阅读 3,003评论 0 0

友情链接更多精彩内容