(逆序对)假设A[1..n]是一个有n个不同数的数组。若i<j且A[i]>A[j],则对偶(i, j)称为A的一个逆序对(inversion)。
a. 列出数组<2, 3, 8, 6, 1>的5个逆序对。
b. 由集合{1, 2, ..., n}中的元素构成的数组具有最多的逆序对?它有多少逆序对?
c. 插入排序的运行时间与输入数组中逆序对的数量之间是什么关系?证明你的回答。
d. 给出一个确定在n个元素的任何排列中逆序对数量的算法,最坏情况需要θ(nlgn)时间。(提示:修改归并排序)
解答:
a 解答:
5个逆序对分别为<2, 1>, <3, 1>, <8, 6>, <8, 1>, <6, 1>
b 解答:
如果集合{1, 2, ..., n}有最多的逆序对,则它必然是已按逆序排序的数组,因为对于每一个组成逆序对第一个值的下标i,都存在n-i个逆序对,而这是它所能达到的逆序对个数的最大值。总逆序对数量为,等于
。
c. 解答:

1278

被折叠的 条评论
为什么被折叠?



