#include <iostream> #include <cstdio> int b[11111]; int num[11111]; //归并排序 void mergeSort(int *a, int l, int r){ if(r-l<= 1) return; int mid= (l+ r)/2; mergeSort(a, l, mid); mergeSort(a, mid, r); int p= l, q= mid; int i= l; while (p< mid || q< r){ if(q>= r) b[i++]= a[p++]; else if(p>= mid || a[p]> a[q]) b[i++]= a[q++]; else b[i++]= a[p++]; } for (int j= l; j< r; j++) { a[j]= b[j]; } } //插入排序 void insertSort(int *a, int l, int r){ for(int i= l+1; i< r; i++){ int temp= a[i]; for(int j= i-1; j>= l; j--) if(a[j]> temp){ a[j+1]= a[j]; a[j]= temp; } } } //选择排序 void selectSort(int *a, int l, int r){ for (int i= l; i< r; i++) for (int j= i+1; j< r; j++) if(a[i]> a[j]){ a[i]= a[i]^a[j]; a[j]= a[i]^a[j]; a[i]= a[i]^a[j]; } } //希尔排序 void shellSort(int *a, int l, int r){ int gap= 0; while (gap <= r-l) gap= gap*3+ 1; //这里用直接插入排序 while (gap) { for(int i= l; i< l+gap ; i++){ int j= i+ gap; while(j< r){ int temp= a[j]; for(int k= j- gap; k>= l; k-= gap) if(a[k]> temp){ a[k+ gap]= a[k]; a[k]= temp; } j+= gap; } } gap= (gap- 1)/3; } } //冒泡排序 void buddleSort(int *a, int l, int r){ for (int i= l; i< r- 1; i++) for(int j= l; j< r- 1; j++) if (a[j]> a[j+1]) { int temp= a[j]; a[j]= a[j+1]; a[j+1]= temp; } } //快速排序 void quickSort(int *a, int l, int r){ if(r- l<= 1) return; int key= a[l], i= l, j= r- 1; while(i< j){ while (i< j && a[j]>= key) --j; int temp= a[i]; a[i]= a[j]; a[j]= temp; while (i< j && a[i]<= key) ++i; temp= a[i]; a[i]= a[j]; a[j]= temp; } quickSort(a, l, i); quickSort(a, i+1, r); } //堆排序 void mySwap(int *a, int *b){ int temp= *a; *a= *b; *b= temp; } void heapChang(int *a, int i, int len){ int child= 2* i+ 1; while (child < len) { if(child+ 1< len) if(a[child]< a[child+ 1]) ++child; if(a[i]>= a[child]) break; mySwap(a+i, a+child); i= child; child= 2* i+ 1; } } void heapSort(int *a, int *b){ int len= (b- a); for(int i= (len-1)/2; i>= 0; i--) heapChang(a, i, len); mySwap(a, b-1); //进行n-1次堆调整 for(int i= 1; i< len; i++){ heapChang(a, 0, len-i); mySwap(a, b-i-1); } } int main(int argc, const char * argv[]) { int n; while (scanf("%d",&n)!=EOF) { for(int i= 1; i<= n; i++) scanf("%d",&num[i]); //mergeSort(num, 1, n+1); //insertSort(num, 1, n+1); //selectSort(num, 1, n+1); //shellSort(num, 1, n+1); //buddleSort(num, 1, n+1); //quickSort(num, 1, n+1); heapSort(num+1, num+n+1); printf("%d\n",num[1+n/2]); } return 0; }