试图弄清楚哪种类型的数组最多包含n次反转,其中n为数组大小。我在想一个几乎排序的数组将属于这种情况,并且还是一个几乎完全按照max元素和min元素切换排序的数组,例如..
9 2 3 4 5 6 7 8 1
所以我的想法是,当一个数组最多有n个反转时,是否可以安全地说该数组几乎已经排序了?或者是否有其他情况下,数组最多只能有n次反转而且几乎没有排序。
答案 0 :(得分:4)
“最少”排序数组(即反向排序)具有1 + 2 + 3 + ... + n-1 = n(n-1)/2
个反转。
数组的反转越少,它就越“排序”。
而且,由于n
比n(n-1)/2
小很多,因此可能会调用一个数组n
反转'几乎排序'。
此数组包含n-1
个反转:
9 1 2 3 4 5 6 7 8
在回复您的评论时,insertion sort的复杂性为O(n + d)
,其中d
是反转的数量,因此它将在O(n)
中运行{{1}反转。