笔记-归并排序
#include<yzrarray.h>//自定义的数组操作,方便使用 void mergearray(int a[],int first,int mid,int last,int temp[]) { //划分成两个有序数组的合并 int i=first,j=mid+1,m=mid,n=last,k=0; while(i<=m&&j<=n) if(a[i]<a[j]) temp[k++]=a[i++]; else temp[k++]=a[j++]; while(i<=m)temp[k++]=a[i++]; while(j<=n)temp[k++]=a[j++]; for(i=0;i<k;i++)a[first+i]=temp[i]; } void mergesort(int a[],int first,int last,int temp[]) { if(first<last) { int mid=(first+last)/2; mergesort(a,first,mid,temp);//左边有序 mergesort(a,mid+1,last,temp);//右边有序 mergearray(a,first,mid,last,temp);//合并 } } int main() { int a[10],c[20]; ArrRand(a,10); Print(a,10); mergesort(a,0,10-1,c); Print(a,10); }
版权声明:本文为博主原创文章,未经博主允许不得转载。