• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

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

OC/C/C++ 水墨上仙 2077次浏览

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

// 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,temp+count1,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);  
}  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C语言实现归并排序算法代码
喜欢 (0)
加载中……