【发布时间】:2021-08-04 23:43:57
【问题描述】:
存在哪些排序算法(如果有)具有以下属性?
- 给定一个包含 N 个元素的数组进行排序
- 算法需要 M
- 时间复杂度在最坏情况下为
【问题讨论】:
-
一个常数空间 O(n log n) 的排序是堆排序。即使有更快的算法,你也会经常看到它在嵌入式应用程序中使用。如果正确实施,快速排序是 O(log n) 空间,但只有平均情况 O(n log n) 时间(最坏情况 O(n ^ 2)),除非它是“内省的”。合并排序是 O(n log n) 但通常需要 O(n) 空间,尽管有复杂的常数空间版本使用聪明的数论技巧来合并没有缓冲区。我见过的基数和桶排序不起作用。它们都有与键大小加 n 相关的内存开销。
-
还有一点是链表上的归并排序不需要额外的空间。注意:您的标题滥用了“严格上限”一词。我认为您的意思是“小上限”。紧意味着别的东西。
标签: algorithm sorting computer-science