快速排序

来源:互联网 发布:雅思口语全薇 知乎 编辑:程序博客网 时间:2024/06/09 19:07
基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
#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;}