關于這道題我不想多說,水滴題,最快的方式就是調用qsort()函數了,一點技術含量都沒有。不過要是能自己寫出qsort()函數就不是那么隨意了。
這道題我做了兩遍,第一次是調用qsort庫函數,感覺不過癮,所以自己又寫了一遍qsort函數。
#include<stdio.h>
#define M 1010
int main()


{
void sort(int num[],int low,int high);
int T,N;
int num[M];
scanf("%d",&T);
while(T--)

{
int i,j;
scanf("%d",&N);
for(i=0;i<N;i++)
scanf("%d",&num[i]);
sort(num,0,N);
for(i=0;i<N-1;i++)
printf("%d ",num[i]);
printf("%d\n",num[i]);
}
}
void sort(int num[],int low,int high)


{
int po=low;//選取第一個元素為比較的初始值
int i=low,j=high,term;
if(high-low+1>=2)

{
while(i<=j)

{
for(;j>=i;j--)

{
if(num[j]<num[po])

{
term=num[po];
num[po]=num[j];
num[j]=term;
po=j--;
break;
}
}
for(;j>=i;i++)

{
if(num[i]>num[po])

{
term=num[po];
num[po]=num[i];
num[i]=term;
po=i++;
break;
}
}
}
sort(num,low,po-1);//遞歸調用
sort(num,po+1,high);
}
}

posted on 2011-08-19 16:48
小鼠標 閱讀(182)
評論(0) 編輯 收藏 引用