插入排序的 倒置与部分有序

如果数组中倒置的数量小于数组大小的某个倍数就可称其为部分有序 。

 

对于 部分有序的 疑惑 如下

N个数的倒置最多为N*(N-1)/2, 当N是奇数时,最多的倒置数量肯定是N的倍数,但当N是偶数时,倒置就不是N的整数倍了,那还能叫部分有序吗? 见下面的例子

数组 a[8] = {8,7,6,5,4,3,2,1},假设我们要升序排列。 这个倒置数量是 8*(8 -1)/2 = 28 。

28 小于 8 的整数倍(4 * 8 = 32),则这个数组是部分有序的。可是这明显不是部分有序。

倒置对数如下

87,86,85,84,83,82,81,

76,75,74,73,72,71,

65,64,63,62,61,

54,53,52,51,

43,42,41,

32,31,

21