|NOIOJ|二分快排|7617:輸出前k大的數
阿新 • • 發佈:2019-02-18
http://noi.openjudge.cn/ch0203/7617/
水題,用快排即可
參考程式碼
#include<cstdio> int a[100200]; int n,k; void qs(int l, int r) { int i=l, j=r, x=a[(l+r)/2], y; do { while(a[i]>x) i++; while(a[j]<x) j--; if(i<=j) { y = a[i]; a[i]=a[j], a[j]=y; i++, j--; } } while (i<=j); if (l<j) qs(l,j); if (i<r) qs(i,r); } void init() { scanf("%d", &n); for (int i=1;i<=n;i++) { scanf("%d", &a[i]); } scanf("%d", &k); } void go() { qs(1, n); for (int i=1;i<=k;i++) { printf("%d\n", a[i]); } } int main() { init(); go(); return 0; }