幫我排個數字謝謝QQ
輸入說明 :
有多筆測資以EOF為結束
第一行有一個正整數n(1<=n<=1000),代表有幾個數字要請你幫忙排
第二行有n個可以用int儲存的正整數
輸出說明 :
輸出n個已由小到大排序好的正整數
範例輸入 :
6
7 9 0 4 1 8
8
1 9 9 0 0 9 2 8
範例輸出 :
0 1 4 7 8 9
0 0 1 2 8 9 9 9
提示 :
背景知識: 基礎排序
程式碼 :
#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,n[1001],len; i = 0; while(scanf("%d",&len)==1) { for(i=0; i<len; i++) scanf("%d",&n[i]); qsort(n,0,len-1); for(i=0; i<len; i++) printf("%d ",n[i]); printf("\n"); } return 0; }
http://zerojudge.tw/ShowProblem?problemid=a104
沒有留言:
張貼留言