写了个二路归并的归并排序小代码,直接贴上来
/*
file:quick.cpp
author:www.5dkx.com
*/
#include
using namespace std;
void Merge(int a[],int low,int mid,int high,int b[]);
void MSort(int a[],int low,int high,int b[]);
void main()
{
int a[]={4,5,9,10,51,6,46,36,6,56,67,45,36};
int b[13];
MSort(a,0,12,b);
for(int i=0;i<13;i++)
cout<
cout< for(int j=0;j<13;j++) cout< cout< } void Merge(int a[],int low,int mid,int high,int b[]) { int i=low,j=mid+1,k=low; while((i<=mid)&&(j<=high)) { if(a[i]<=a[j]) { b[k]=a[i]; i++; } else { b[k]=a[j]; j++; } k++; } while(i<=mid) { a[k]=a[i]; k++; i++; } while(j<=high) { a[k]=a[j]; k++;j++; } } void MSort(int a[],int low,int high,int b[]) { if(low==high) b[low]=a[low]; else { int mid=(low+high)/2; MSort(a,low,mid,b); MSort(a,mid+1,high,b); Merge(a,low,mid,high,b); } }