快速排序.
用O(n2)的會咻~碰
輸入說明 :
只有一組測資
就是把檔案中所有的數字排序
請用EOF
請將n 由大排到小.
至多有 100001 個數字(我本來就想讓大家MLE...
輸出說明 :
請將 排序好的數列 輸出
記得要間隔
不必換行.
範例輸入 :
1 4 3 5 2
範例輸出 :
5 4 3 2 1
程式碼 :
#include<stdio.h>
void qsort(int n[], int left, int right)
{
int i = left, j = right+1, temp;
int ii = left-1, jj = j;
if(left < right)
{
while(1)
{
while((i+1)<jj && n[++i]>n[left]);
while((j-1)>ii && n[--j]<n[left]);
if(i >= j)
break;
temp = n[i];
n[i] = n[j];
n[j] = temp;
}
temp = n[left];
n[left] = n[j];
n[j] = temp;
qsort(n, left, j-1);
qsort(n, j+1, right);
}
}
int main()
{
int i,j,n[100000];
char nouse;
i = 0;
while(scanf("%d%c",&n[i++],&nouse)==2)
{
if(nouse == '\n')
{
qsort(n,0,i-1);
for(j=0; j<i; j++)
printf("%d ",n[j]);
printf("\n");
i = 0;
}
}
return 0;
}
http://zerojudge.tw/ShowProblem?problemid=d075
沒有留言:
張貼留言