C语言实现归并排序算法代码
2018-07-20 来源:open-open
// 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); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
最新资讯
热门推荐