1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| #include <bits/stdc++.h> #define LL long long #define Pi acos(-1.0) #define INF 2147483646 #define eps 1e-9 #define MS 100009 #define mss 17 using namespace std;
int len = 9; int p[10];
void input(){ for(int i=0;i<len;i++) scanf("%d",&p[i]); }
void Merge(int low,int mid,int high){ int i = low ,j = mid+1 ,k = 0; int *r; r = (int*)malloc((high-low+1)*sizeof(int)); while(i<=mid&&j<=high){ if(p[i]<p[j]) r[k++] = p[i++]; else r[k++] = p[j++]; } while(i<=mid) r[k++] = p[i++]; while(j<=high) r[k++] = p[j++]; for(i=low,k=0;i<=high;i++,k++) p[i] = r[k]; free(r); }
void MergeSort(int l,int r){ if(l>=r) return; int mid = (l+r)/2; MergeSort(l,mid); MergeSort(mid+1,r); Merge(l,mid,r); }
void output(){ for(int i=0;i<len;i++) printf("%d ",p[i]); }
int main() { input(); MergeSort(0,len-1); output(); return 0; }
|