POJ2388 Who's in the Middle 快排

Problem Address:http://poj.org/problem?id=2388

 

第一次写快排,一次AC。

 

Memory:176K    Time:0MS

 

由于是要求出中间数,所以每次快排的时候只需对中间数所在的区间进行快排即可。

 

以下贴代码:

 

#include <iostream> using namespace std; int milk[10005],n,mid; void qs(int s, int t) { int i,j,temp; if (s>=t) return; for (i=s,j=s; i<t; i++) { if (milk[i]<milk[t]) { temp = milk[i]; milk[i] = milk[j]; milk[j] = temp; j++; } } temp = milk[t]; milk[t] = milk[j]; milk[j] = temp; if (j==mid) return; else if (j<mid) qs(j+1,t); else qs(s,j-1); } int main() { int i; scanf("%d", &n); for (i=1; i<=n; i++) scanf("%d", &milk[i]); mid = n/2+1; qs(1,n); printf("%d/n", milk[mid]); return 0; }

 

p.s.下星期就要校赛了,好好加油!

 

你可能感兴趣的:(POJ2388 Who's in the Middle 快排)