n个数字的排序时间是否取决于数字的排列?

时间:2018-01-04 12:52:45

标签: algorithm sorting

考虑这个问题:

  

基于比较的排序算法使用kubectl get pods --namespace=kube-system 项对数组进行排序。对于n排列的哪个部分,比较的数量可能是n!,其中cn是常数?

我知道使用任意项对数组进行排序的最佳时间复杂度为c并且它不依赖于任何顺序,对吧?因此,没有导致O(nlogn)比较的分数。如果我错了,请指导我。

1 个答案:

答案 0 :(得分:3)

这取决于您使用的排序算法。

例如,

Optimized Bubble Sort比较数组的所有相邻元素,并在左元素大于右元素时交换它们。重复这一过程,直到没有进行交换。

当你给冒泡排序一个排序数组时,它不会在第一次迭代中执行任何交换,因此在O(n)中排序。

另一方面,Heapsort将取O(n log n)而不依赖于输入的顺序。

修改:

要回答您针对给定排序算法的问题,可能并非易事。 n中只有一个!对排列进行排序(为简单起见,假设没有重复)。但是,对于bubblesort的示例,您可以(从排序数组开始)交换每对相邻元素。此输入将使Bubblesort进行两次迭代,这也是O(n)。