归并排序

来源:互联网 发布:xd破解id软件 编辑:程序博客网 时间:2024/06/10 08:23
#include <iostream>using namespace std;void merge(int*a,int a1,int a2,int a3){      int n1,n2;         int*leftarray=NULL;  int*rightarray=NULL;       n1=a2-a1+1;   n2=a3-a2;        leftarray=(int*)malloc(sizeof(int)*(n1));rightarray=(int*)malloc(sizeof(int)*(n2));int i,j;for(i=0;i<n1;i++)leftarray[i]=a[a1+i];for(j=0;j<n2;j++)rightarray[j]=a[a2+1+j];i=j=0;int t=a1;while(i<n1&&j<n2){if(leftarray[i]>rightarray[j])a[t++]=leftarray[i++];elsea[t++]=rightarray[j++];}for(;i<n1;i++)a[t++]=leftarray[i++];for(;j<n2;j++)a[t++]=rightarray[i++];}void mergesort(int*a,int k,int n){    int m=0;    if(k<n){ m=(n+k)/2;mergesort(a,k,m);mergesort(a,m+1,n);//divide and conquermerge(a,k,m,n);}}int main(){int a[10]={3,2,4,5,3,9,14,123,8,17};mergesort(a,0,9);for(int i=0;i<10;i++)cout<<a[i];system("pause");return 0;}

原创粉丝点击