Ultra-QuickSort(归并排序+逆序数)

题目链接:http://poj.org/problem?id=2299

题目意思:给你一个离散的数列,然后要排序成有序的序列,但每次只能在相邻的两个之间交换,问你要交换的最小次数。

这是简单的归并排序题,

给出归并排序的模板:

void merge(int low, int mid, int high)
{
    int i,j,k;
    i=k=low;
    j=mid+1;
    while(i<=mid && j<=high)
    {
        if(num[i]

下面给出该题的代码:

#include
const int maxn=500000+5;
int num[maxn];
int tmp[maxn];
long long sum;
void merge(int low, int mid, int high)
{
    int i, j, k;
    i=k=low;
    j=mid+1;
    while(i<=mid && j<=high)
    {
        if(num[i]0)
    {
        int i;
        sum=0;
        for(i=0; i




你可能感兴趣的:(pku,排序)