现在的位置: 首页 > 综合 > 正文

快速排序

2013年10月03日 ⁄ 综合 ⁄ 共 775字 ⁄ 字号 评论关闭

基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

#include<stdio.h>
int partition(int *a,int p,int r);
int quicksort(int *a,int p,int r);

int main()
{
        int k;
        int a[10]={3,4,5,10,1,7,6,9,8,2};
        
        quicksort(a,0,9);
       // partition(a,0,9);
        for(k=0;k<9;k++)
        {
        printf("%d ",a[k]);
        }
        printf("%d\n",a[9]);
        return 0;
}

int quicksort(int *a,int p,int r)
{
    int q=0;
    if(p<r)
    {
        q=partition(a,p,r);
        quicksort(a,p,q-1);
        quicksort(a,q+1,r);
    }
}

int partition(int *a,int p,int r)
{
    int x,i,t,j;
    x=a[r];
    i=p-1;
    for(j=p;j<r;j++)
    {
        if(a[j]<x)
        {
            i=i+1;
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
    }
    t=a[i+1];
    a[i+1]=a[r];
    a[r]=t;
    return i+1;
}    

抱歉!评论已关闭.