训练计划第一题,先从水题开始:对数组进行排序,然后输出中间数。
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; }
Who's in the Middle(简单排序)
时间: 2024-10-09 02:12:05