我来举个例子,比如说你有这两堆火柴:
2 1 3 4
8 7 6 5
很明显我们对应的时候应该这么对应:
2 1 3 4
6 5 7 8
------------
我们先把这两队火柴每一根火柴在队伍中的排名表示出来(比如第二堆火柴中5是最短的,应该是第一名)
2 1 3 4
4 3 2 1
再强行定义一下,告诉计算机2=1,1=2,以第一堆为榜样重新定义(因为你是以第一堆为模型进行排序啊,没必要两边都排序)
1 2 3 4
3 4 2 1
明白了吗?
by 安妮007 @ 2018-02-11 06:59:36
@[Ash1mar](/space/show?uid=33266) 我是这么想的,因为这道题让最大值最小,所以序列肯定有对应关系,例如
2 3 4 1
和
5 2 3 1
这两个序列对应关系应该是:
1对应1,2对应2,3对应3,4对应5;
而只要让序列对应排列就能让最大值最小,而这与逆序对有什么关系呢?
其实,因为1对应1,1在序列二中的位置是4
,2对应2,2在序列2中的位置是2.。。。
所以将序列1中对应的数字的位置列出来就是
2 3 1 4
接下来就只要求通过每次相邻的互换,换多少次能让序列有序就为答案案了,而这个数就是逆序对数
by 黄俊豪 @ 2018-11-07 08:07:29