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

【算法】归并排序

时间:2016-02-26 21:58:04      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

void merge_sort(int *A,int x,int y,int *T)
{
  if(y-x>1){
    int m=x+(y-x)/2;
    int p=x,i=x,q=m;
    merge_sort(A,x,m,T);
    merge_sort(A,m,y,T);
    while(p<m || q<y){
      if(q>=y || (A[p]<=A[q] && p<m))T[i++]=A[p++];
      else T[i++]=A[q++];
    }
    for(i=x;i<y;i++)A[i]=T[i];
  }
}
实例:

int main()
{
  int k[]={4,6,2,8,9,3};
  int *p;
  p=new int[6];
  marge_sort(k,0,6,p);
  for(int i=0;i<6;i++)cout<<k[i]<<‘ ‘;
  cout<<endl;
}

背下来了,啊哈哈!!!

算法理解了,但下一次碰到相似的题目又不会,好苦恼~_~

【算法】归并排序

标签:

原文地址:http://www.cnblogs.com/zhenxianluo/p/5221884.html

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