swift4 - Sort方法的时间复杂度
问题描述
我需要对包含数字元素的数组进行排序。但是,我不确定使用 sort 方法是否有效,因为我不知道这种方法的时间复杂度。苹果文件也没有提到它。所以我想知道这个方法的时间复杂度是多少,使用了什么样的排序算法。
解决方案
Swift 使用 Introsort。查看源代码,我们看到选择的枢轴是第一个元素。
维基百科链接:https ://en.wikipedia.org/wiki/Introsort
从维基百科页面:
(...),关键操作之一是选择枢轴:列表分区所围绕的元素。最简单的枢轴选择算法是将列表的第一个或最后一个元素作为枢轴,这在排序或接近排序输入的情况下会导致不良行为。
查看那个 wikipedia 页面,完全可以预测,考虑到实现选择,Swift 的排序性能对于排序的输入来说是最差的。它的平均性能是 O(n log n),这恰好也是它最坏的情况。
推荐阅读
- excel - 组合框中的索引值
- excel - 类型与变体/整数不匹配
- jenkins - 如何从 Jenkins 管道启用并发构建
- android - 当我在 Android Studio 中使用导航第二次启动操作时,为什么导航目的地会丢失?
- javascript - 向左或向右看时,如何使子弹不随角色移动?
- node.js - 使用 Nodejs 在 Mongodb 中导入文件
- reactjs - 将变量传递给 React useCallback 钩子
- angular - 无法使用 angular-6-social-login 在 ionic 中使用 google 登录
- java - 使用任何 JavaFX 指令时 Gradle 项目中的 IllegalAccessError
- java - Spring Batch:处理块后发送通知