关于这道题我不想多说,水滴题,最快的方式就是调用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
小鼠标 阅读(179)
评论(0) 编辑 收藏 引用