首页 > 代码库 > 归并排序代码
归并排序代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void Meger(int A[],int p,int q,int r)//A为数组,p,q,r分别为下标 5 { 6 int n1 = q-p+1; //前半部分长。 7 int n2 = r-q; //后半部分长。 8 //保存左右部分,为后面改变A[]数列做准备 9 int *L = (int *)malloc(sizeof(int)*n1+1);10 int *R = (int *)malloc(sizeof(int)*n2+1);11 int i;12 for(i=1;i<=n1;i++)13 {14 L[i] = A[p+i-1];15 }16 for(i=1;i<=n2;i++)17 {18 R[i] = A[q+i];19 }20 21 i = 1;22 int j=1;23 int k = p;24 while((i<=n1)||(j<=n2))25 {26 if(L[i]<=R[j])27 {28 A[k] = L[i];29 i++;30 k++;31 }32 else{33 A[k] = R[j];34 j++;35 k++;36 }37 }38 while(i<=n1)39 {40 A[k] = L[i];41 k++;42 i++;43 }44 while(j<=n2)45 {46 A[k] = R[j];47 k++;48 j++;49 }50 }51 52 void Megere_Sort(int A[],int p,int r)53 {54 if(p<r)55 {56 int q = (p+r)/2;57 Megere_Sort(A,p,q);58 Megere_Sort(A,q+1,r);59 Meger(A,p,q,r);60 }61 }62 63 int main()64 {65 int A[10] = {5,8,1,3,4,8,5,6,7,8};66 Megere_Sort(A,0,9);67 int i;68 for(i=0;i<10;i++)69 {70 printf("%d ",A[i]);71 }72 return 0;73 }
vc下成功,codeblocks下出现问题,貌似是内存控制……。目前无解。
分治法学习(归并排序个人笔记)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。