寻找时间和空间的复杂性

时间:2015-08-23 14:50:53

标签: algorithm sorting time-complexity

我一直在学习排序。 大多数排序算法(合并,快速等)都使用数组。

如果我没有对阵列进行排序,我在想什么。

我想到的算法是

  • 遍历数组中的每个元素 - O(n)。
  • 对于每个元素,将元素与双向链表的起始和结束元素进行比较。
  • 将元素添加到链接列表中的正确位置。 (从列表的开头/结尾开始迭代,根据哪一个更快)。
  • 当原始数组中的所有元素都被排序时,创建后台线程将它们复制到数组中。在复制未完成之前,通过迭代列表返回索引元素。
  • 复制完成后,通过数组索引返回元素。

现在,这将是什么时间复杂性以及如何计算它?

1 个答案:

答案 0 :(得分:0)

您描述的算法基本上是Insertion sort的变体版本。

这里使用链表的主要原因是为了避免数组中元素的额外交换。将元素与双向链表的头部和尾部进行比较可以提供较小的性能改进,如果有的话。

随机输入的时间复杂度仍为O(N 2 )。

相关问题