快速排序

思路清晰.

思想:分治。

效率:O(N*logN)

#include<stdio.h>
int part(int a[],int l,int r)
{
        int temp,i,j;
        temp=a[l];
        i=l;
        j=r;
        while(i<j)
        {
        while(i<j&&a[j]>=temp)
                j--;
        if(i<j)
        {
                a[i]=a[j];
                i++;
        }
        while(i<j&&a[i]<=temp)
                i++;
        if(i<j)
        {
                a[j]=a[i];
                j--;
        }
        }
        a[i]=temp;
        return i;
}
quick(int a[],int l,int r)
{
        if(l<r)
        {
                int i=part(a,l,r);
                quick(a,l,i-1);
                quick(a,i+1,r);
        }
}
int main()
{
        int a[100],n,n1,i=0;
        printf("please input the num of a[]:");
        scanf("%d",&n);
        n1=n;
        while(n1--)
        {
                scanf("%d",&a[i]);
                i++;
        }
        quick(a,0,n-1);
        for(i=0;i<n;i++)
        printf("%d ",a[i]);
        return 0;
}

 

posted on 2013-09-23 22:57  hrbust_09zhangyabin  阅读(161)  评论(0编辑  收藏  举报