#include <iostream> using namespace std; void merge(int A[],int p,int q,int r){ int i=p,j=q+1,k=0; int *temp=new int[10]; while (i<=q&&j<=r) { if (A[i]<A[j]) { temp[k++]=A[i++]; } else { temp[k++]=A[j++]; } } while (i<=q) { temp[k++]=A[i++]; } while (j<=r) { temp[k++]=A[j++]; } for (int t=0;t<k;t++) { A[p+t]=temp[t]; } delete [] temp; } void mergesort(int A[],int p,int r){ int q; if (p<r) { q=(p+r)/2; mergesort(A,p,q); mergesort(A,q+1,r); merge(A,p,q,r); } } int main(){ int A[10]={7,23,42,43,6,75,12,45,78,98}; mergesort(A,0,9); for (int i=0;i<10;i++) { printf("%d\n",A[i]); } return 0; }
合并排序
最新推荐文章于 2019-01-05 19:50:28 发布