归并排序
来源:互联网 发布:java 整型多少位 编辑:程序博客网 时间:2024/06/07 21:56
/*归并排序*/#include <iostream>#include <cstdio>using namespace std;void merg( int *a,int sta,int mid,int end ){ int i,j,k; int *b=new int[end-sta+1]; k=0 , i=sta , j=mid ; while( i<mid && j<=end ) { if( a[i]<a[j] ) b[k++]=a[i++]; else b[k++]=a[j++]; } while( i<mid ) b[k++]=a[i++]; while( j<=end ) b[k++]=a[j++]; for( i=0;i<end-sta+1;i++ ) a[sta+i]=b[i]; delete b;}void mergsort( int *a,int sta,int end ){ int i,mid; if( sta==end ) return; else { mid=( sta+end )/2; mergsort( a,sta,mid ); mergsort( a,mid+1,end ); merg( a,sta,mid+1,end ); }}int main(){ int i; int a[10]={73,56,71,2,4,34,47,46,25,12}; mergsort( a,0,9 ); for( i=0;i<10;i++ ) cout<<a[i]<<" "; cout<<endl; return 0;}