2388 Who's in the Middle(简单排序)
训练计划的第一个问题,首先从水问题开始:排序的数组,中间数则输出。
http://poj.org/problem?id=2388
冒泡排序:
#include <iostream> using namespace std; int main() { int i, j, n,t; int a[10000]; cin>>n; for(i=0; i<n; i++) { cin>>a[i]; } //冒泡排序 for(i=0; i<n-1; i++) for(j=0; j<n-i-1; j++) if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } cout<<a[n/2]<<endl; return 0; }
高速排序:
#include <iostream> using namespace std; //高速排序 void qsort(int a[ ], int l, int r) { int x=a[l], i=l, j=r; if(l>=r) return; while(i<j) { while(i<j && a[j]>=x) j--; a[i]=a[j]; while(i<j && a[i]<=x) i++; a[j]=a[i]; } a[i]=x; qsort(a,l,i-1); qsort(a,i+1,r); } int main() { int i, n; int a[10000]; cin>>n; for(i=0; i<n; i++) { cin>>a[i]; } qsort(a,0,n-1); cout<<a[n/2]<<endl; return 0; }
版权声明:本文博客原创文章。博客,未经同意,不得转载。