Time Limit: 1000MS Memory Limit: 65536KB PRoblem Description
給定N(N≤10^5)個整數,要求用快速排序對數據進行升序排列,注意不得使用STL。
Input
連續(xù)輸入多組數據,每組輸入數據第一行給出正整數N(≤10^5),隨后給出N個整數,數字間以空格分隔。
Output
輸出排序后的結果,數字間以一個空格間隔,行末不得有多余空格。
Example Input
8
49 38 65 97 76 13 27 49
Example Output
13 27 38 49 49 65 76 97
#include <stdio.h>int a[3100000];void qsort(int l,int r){ int i=l,j=r; if(l>=r) return; int k=a[l]; while(i<j) { while(i<j&&a[j]>=k) j--; a[i]=a[j]; while(i<j&&a[i]<=k) i++; a[j]=a[i]; } a[i]=k; qsort(l,i-1); qsort(i+1,r);}int main(){ int n; while(scanf("%d",&n)!=EOF) { for(int i=0; i<n; i++) { scanf("%d",&a[i]); } qsort(0,n-1); for(int i=0; i<n; i++) { if(i!=n-1) printf("%d ",a[i]); else printf("%d/n",a[i]); } } return 0;}新聞熱點
疑難解答