码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法总结(三)逆序对

时间:2015-03-12 11:32:13      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:排序算法   归并   

求数组中的逆序对

#include<iostream>
using namespace std;
int MergeArray(int r[],int s,int m,int e,int temp[]){
	int i=m,j=e,count=0,k=0;
	while(i>=s&&j>=m+1){
		if (r[i]>r[j]){
			temp[k]=r[i];
			k++;
			count=count+(j-m);
			i--;
		}
		else if (r[i]<=r[j]){
			temp[k]=r[j];
			k++;
			j--;
		}
	}
	while(i>=s)//表示前半段数组中还有元素未放入临时数组
    {
        temp[k++]=r[i--];
    }

    while(j>m)
    {
        temp[k++]=r[j--];
    }
	for(int z=0;z<k;z++){
		r[e-z]=temp[z];
	}
	return count;
}
int Nixudui(int r[],int s,int e,int temp[]){
	int count=0;
	if(s<e){//递归的界限
		int m=(s+e)/2;
		count+=Nixudui(r,s,m,temp);
		count+=Nixudui(r,m+1,e,temp);
		count+=MergeArray(r,s,m,e,temp);
	}
	return count;
}
void main(){
	int A[4]={7,5,6,4};
	int *temp=new int[4];
	int rs;
	rs=Nixudui(A,0,3,temp);
	delete[] temp;
	cout<<rs<<endl;
	system("pause");
}


排序算法总结(三)逆序对

标签:排序算法   归并   

原文地址:http://blog.csdn.net/eliza1130/article/details/44218923

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!