就是一个极其基础的排序..
- #include "iostream"
- using namespace std;
- void MergeSort(int *a,int *b){
- if(b-a>1){//还可以继续分割
- int *m=a+(b-a)/2;
- MergeSort(a,m);//对前一个区间进行排序
- MergeSort(m,b);//对后一个区间进行派序
- int *i=a,*j=m;
- int *temp=new int[b-a];
- int *t=temp;
- //将两子区间的内容暂存到动态分配的内存中合并
- while(i!=m && j!=b){
- if(*i < *j){*t = *i; ++i; ++t;}
- else{ *t = *j; ++j; ++t;}
- }
- while(i!=m){ *t = *i; ++i; ++t;}
- while(j!=b){ *t = *j; ++j; ++t;}
- for(t=temp,i=a;i!=b;++i,++t)//复制回原空间中
- *i = *t;
- delete []temp;
- }
- }
- int main(){
- int a[100],n;
- while(scanf("%d",&n)==1){
- for(int i=0;i<n;++i)//数据输入
- scanf("%d",&a[i]);
- MergeSort(a,a+n);//排序
- for(int i=0;i<n;++i)//数据输出
- printf("%d ",a[i]);
- puts("");
- }
- return 0;
- }