1 #include <iostream>
2 using namespace std;
3 int pt[1000000];
4 void quicksort(int*,int,int);
5 void insert(int*,int,int);
6 int main()
7 {
8 int num,i=0,L;
9 while(cin>>num)
10 {
11 pt[i++]=num;
12 if(cin.get()=='\n') break;
13 }
14 L=i;
15 int left=0,right=L-1;
16 quicksort(pt,left,right);
17
18 for(i=0;i<L;i++)
19 cout<<pt[i]<<" ";
20 }
21 void quicksort(int*pt,int left,int right)
22 {
23 if(left>right-10) insert(pt,left,right);
24 else{
25
26
27 int l=left,r=right,num;
28 int pivot=(left+right)/2;
29
30 num=pt[pivot];pt[pivot]=pt[r];pt[r]=num;
31 pivot=r;
32
33 while(l<r){
34
35
36
37
38 while(pt[l]<pt[pivot]) l++;
39
40 while(pt[r]>=pt[pivot]) r--;
41
42 num=pt[l];pt[l]=pt[r];pt[r]=num;
43 }
44
45 num=pt[l];pt[l]=pt[r];pt[r]=num;
46
47 num=pt[l];pt[l]=pt[pivot];pt[pivot]=num;
48
49 quicksort(pt,left,l-1);
50 quicksort(pt,l+1,right);
51
52
53 }
54 }
55 void insert(int*pt,int left,int right)
56 {
57 int i,j,min,num;
58 for(i=left;i<=right-1;i++)
59 {
60 min=i;
61 for(j=i+1;j<=right;j++)
62 if(pt[min]>pt[j])min=j;
63
64 num=pt[min];pt[min]=pt[i];pt[i]=num;
65 }
66 }