内排序(4):归并排序

来源:互联网 发布:seo怎么做 编辑:程序博客网 时间:2024/06/14 00:39

归并排序,稳定排序

//归并排序,合并两个数组
void MergeArry(int* a,int start,int mid,int end,int* temp)
{
 int i=start;
 int j=mid+1;
 int k=0;
 while(i<=mid&&j<=end)
 {
  if(a[i]<a[j])
   temp[k++]=a[i++];
  else
   temp[k++]=a[j++];
 }
 while(i<=mid)
  temp[k++]=a[i++];
 while(j<=end)
  temp[k++]=a[j++];
 for(i=0;i<k;i++)
  a[start+i]=temp[i];
}
void MergeSort(int* a,int start,int end,int* temp)
{
 if(start<end)
 {
  int mid=(start+end)/2;
  MergeSort(a,start,mid,temp);
  MergeSort(a,mid+1,end,temp);
  MergeArry(a,start,mid,end,temp);
 }
}

int a[]={16,7,3,20,17,8};
 int size=6;
 
 int *temp=new int[size];
 MergeSort(a,0,size-1,temp);

delete[] temp;

 

原创粉丝点击