hduoj1040

hduoj1040
关于这道题我不想多说,水滴题,最快的方式就是调用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);
    }

}


你可能感兴趣的:(hduoj1040)