【发布时间】:2015-11-17 00:43:39
【问题描述】:
我一直在学习排序。 大多数排序算法(合并、快速等)都使用数组。
我在想,如果我不对数组进行适当的排序会怎样。
我想到的一个算法是
- 遍历数组中的每个元素 - O(n)。
- 对于每个元素,将该元素与双向链表的开始和结束元素进行比较。
- 将元素添加到链表中的正确位置。 (根据哪个更快,从列表的开头/结尾开始迭代)。
- 当原始数组中的所有元素都排序后,创建后台线程将它们复制到数组中。在未完成复制之前,通过迭代列表返回索引元素。
- 复制完成后,通过数组索引返回元素。
现在,它的时间复杂度是多少?如何计算?
【问题讨论】:
-
成本 O(N^2),空间 O(N)(如果原始数据已经在列表中,则 O(1))。请参阅 C 中的列表插入排序代码en.wikipedia.org/w/…
标签: algorithm sorting time-complexity