首页 > 代码库 > 排序之归并排序
排序之归并排序
归并排序在外排序和内排序的作用都是非常大的,本人觉得要是要用户外排。在处理大数据排序,当内存大小不足以把所有数据一次载入时,这时就需要归并排序。以下进行的是2路归并排序为主。
数组递归归并
1 void mergeCore(int *src,int * &dest,int i,int m,int n){ 2 int k=0,j=0; 3 int begin=i; 4 for(k=i,j=m+1;k<=m&&j<=n;k++){ 5 if(src[i]<src[j]) 6 dest[k]=src[i++]; 7 else 8 dest[k]=src[j++]; 9 } 10 while(i<=m){ 11 dest[k++]=src[i++]; 12 } 13 while(j<=n){ 14 dest[k++]=src[j++]; 15 } 16 while(begin<=n){ 17 src[begin]=dest[begin]; 18 begin++; 19 } 20 } 21 void mergeCall(int *src,int * &dest,int s,int t){ 22 if(s==t) 23 dest[s]=src[s]; 24 else{ 25 int m=(s+t)/2; 26 mergeCall(src,dest,s,m); 27 mergeCall(src,dest,m+1,t); 28 mergeCore(src,dest,s,m,t); 29 } 30 } 31 void mergeSort(int *a,int n){ 32 int *dest= new int[n]; 33 mergeCall(a,dest,0,n-1); 34 delete [] dest; 35 }
排序之归并排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。