具有O(n)反转的数组

时间:2013-10-26 15:56:51

标签: arrays algorithm sorting

试图弄清楚哪种类型的数组最多包含n次反转,其中n为数组大小。我在想一个几乎排序的数组将属于这种情况,并且还是一个几乎完全按照max元素和min元素切换排序的数组,例如..

9 2 3 4 5 6 7 8 1

所以我的想法是,当一个数组最多有n个反转时,是否可以安全地说该数组几乎已经排序了?或者是否有其他情况下,数组最多只能有n次反转而且几乎没有排序。

1 个答案:

答案 0 :(得分:4)

“最少”排序数组(即反向排序)具有1 + 2 + 3 + ... + n-1 = n(n-1)/2个反转。

数组的反转越少,它就越“排序”。

而且,由于nn(n-1)/2小很多,因此可能会调用一个数组n反转'几乎排序'。

此数组包含n-1个反转:

9 1 2 3 4 5 6 7 8

在回复您的评论时,insertion sort的复杂性为O(n + d),其中d是反转的数量,因此它将在O(n)中运行{{1}反转。