Swift实现的快速排序及sorted方法的对比(2)

数组的整体大小没有发生变化,运行效率如图:

这里写图片描述


可以看到算法的主要耗时部分lesser和greater的执行此时由之前的35次变为45次了,那么sorted方法的执行效率又如何呢?

这里写图片描述


你没有看错!对于快排最头疼的顺序性数组,sorted的重复次数只有n次!说明在面对这种类型的数组的时候sorted方法进行过判断,直接输出了。当然闭包中的语句一定要合适,“千万不要使用等于号!”,比如改写a:

var a:[Int] = [1,1,2,2,3,1,1,1,1]

没有等于号的情况:

如果你写上等于号:

这里写图片描述


OMG!效果一样的前提下效率差了好多。
另外一种极端情况,完全逆序一个数组:

这里写图片描述


当然快排的时间和完全相同的元素一样:

这里写图片描述


如果觉得数量级太小不过瘾,那么来个大号的数组:
现在修改a为500个随机的100以内的正整数:

var a:[UInt32] = [] for _ in 0..<500{ a.append(arc4random() % 100) }

同时比较两种排序方式,下面是快排的:

这里写图片描述


下面是sorted的效率:

这里写图片描述


大家可以试试,规模越大的数组效率差别越明显,sorted以肉眼可见的速度秒杀了快排!

Apple Swift学习教程 

使用 Swift 构建一个 iOS 的邮件应用

Swift 2.0开源化 

Swift 的详细介绍请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4ff01cb90bfa311757006b5d1f406d74.html