5 2 4 1 3 5
3HintINPUT DETAILS: Five cows with milk outputs of 1..5 OUTPUT DETAILS: 1 and 2 are below 3; 4 and 5 are above 3.
就是奇数个数字,求中位数,排序下,即可
#include<iostream> #include<stdio.h> #include<string.h> int a[10010]; using namespace std; void Swap(int *a,int *b){ int t=*a; *a=*b; *b=t; } int partition(int a[],int l,int h){ int v = a[l]; int i=l; int j=h+1; while(true){ while(a[++i]<v)if(i==h)break; while(v<a[--j])if(j==l)break; if(i>=j)break; Swap(&a[i],&a[j]); } Swap(&a[l],&a[j]); return j; } void quick_sort(int a[],int l,int h){ if(h<=l)return ; int j=partition(a,l,h); quick_sort(a,l,j-1);//左边 quick_sort(a,j+1,h);//右边 } int main(int argc, char *argv[]) { //freopen("1157.in","r",stdin); int N; int i; while(scanf("%d",&N)!=EOF) { i=0; for(i=0;i<N;++i) scanf("%d",&a[i]); quick_sort(a, 0, N-1); printf("%d\n",a[N/2]); } return 0; }注意事项:partition一定要有返回值!!!别糊涂了,此外,partition确定后,排前面的,和后面的即可,即j-1,j+1
HDU 1157 Who's in the Middle (快速排序 or 任意排序)
原文地址:http://blog.csdn.net/wdkirchhoff/article/details/41865579