加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C语言实现归并排序算法代码

发布时间:2020-12-16 07:45:55 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 // Mix two sorted tables in one and split the result into these two tables. int *Mix(int *tab1,int *tab2,int count1,int count2) { int i,i1,i

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

// Mix two sorted tables in one and split the result into these two tables. 
int *Mix(int *tab1,int *tab2,int count1,int count2) 
{ 
  int i,i1,i2; 
  i = i1 = i2 = 0; 
  int * temp = (int *)malloc(sizeof(int)*(count1+count2)); 
   
  while((i1<count1) && (i2<count2)) 
  { 
    while((i1<count1) && (*(tab1+i1)<=*(tab2+i2))) 
    { 
      *(temp+i++) = *(tab1+i1); 
      i1++; 
    } 
    if (i1<count1) 
    { 
      while((i2<count2) && (*(tab2+i2)<=*(tab1+i1))) 
      { 
        *(temp+i++) = *(tab2+i2); 
        i2++; 
      } 
    } 
  } 
   
  memcpy(temp+i,tab1+i1,(count1-i1)*sizeof(int)); 
  memcpy(tab1,temp,count1*sizeof(int)); 
   
  memcpy(temp+i,tab2+i2,(count2-i2)*sizeof(int)); 
  memcpy(tab2,temp+count1,count2*sizeof(int)); 
  // These two lines can be: 
  // memcpy(tab2,i2*sizeof(int)); 
  free(temp); 
} 
   
// MergeSort a table of integer of size count. 
// Never tested. 
void MergeSort(int *tab,int count) 
{ 
  if (count==1) return; 
   
  MergeSort(tab,count/2); 
  MergeSort(tab+count/2,(count+1)/2); 
  Mix(tab,tab+count/2,count/2,(count+1)/2); 
}  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读