Tag: 归并排序


好久不写题了,写个试试。这个算Mathematica里吧,要不东西太少了。题目:http://acm.scs.bupt.cn/onlinejudge/showproblem.php?problem_id=1185大概是说,给你一个数组,求这个数组的逆序数。求逆序数的暴力方法:对于输入a[i]求a[1]…a[i-1]中大于于a[i]的数的个数,然后对所有这样的数求和。因而是o(n^2)。正常解法:首先想到排序,之后自然想到归并排序。考虑到归并排序中要对两个排列好的子串依次送入结果串,并且可以根据目前子串位置决定后面子串在前面子串的排名,因此可以得到逆序数。对于任意两个子串,后面子串中的数的位置不影响其对于前面子串的逆序数。而任意一个数的逆序数由在本子串的逆序数与对于前子串的逆序数的和。因此可以将两个子串排序,根据后面子串中数在前面子串中的插入位置决定其在前面子串的逆序数。对于本子串的逆序数由递归求得。代码:点击获取源文件

CodePhoto.WTF © 2025