归并排序
1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 int map[100]; 5 void merge_sort(int q[],int l,int r) 6 { 7 if(l>=r) 8 return; 9 int mid=l+r>>1; 10 merge_sort(q,l,mid),merge_sort(q,mid+1,r); 11 int cnt=0,i=l,j=mid+1; 12 while(i<=mid&&j<=r) 13 { 14 if(q[i]<=q[j]) 15 map[cnt++]=q[i++]; 16 else 17 map[cnt++]=q[j++]; 18 } 19 while(i<=mid) 20 map[cnt++]=q[i++]; 21 while(j<=r) 22 map[cnt++]=q[j++]; 23 for(i=l,j=0;i<=r;j++,i++) 24 q[i]=map[j]; 25 } 26 int main() 27 { 28 int a[100]; 29 int n; 30 cin>>n; 31 for(int i=0;i<n;i++) 32 cin>>a[i]; 33 merge_sort(a,0,n-1); 34 for(int i=0;i<n;i++) 35 cout<<a[i]<<endl; 36 return 0; 37 }