首页 > 代码库 > 快速排序

快速排序

快速排序的平均性能较好,为原址排序,时间复杂度为T(n)=n*lg(n).

#include<stdio.h>int PARTITION(int A[],int p,int r){    int i,j,x,t;    i=p-1;    x=A[r];    for(j=p;j<r;j++)        if(A[j]<=x){            i++;            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;}//改进后的,随机选择主元int RANDOM_PARTITION(int A[],int p, int r){    int x,i;    i=rand()%(r-p)+p;    x=A[i];    A[i]=A[r];    A[r]=x;    return PARTITION(A,p,r);}void RANDOM_QUICKSORT(int A[],int p,int r){    int q;    if(p<r){    q=RANDOM_PARTITION(A,p,r);    //q=PARTITION(A,p,r);    RANDOM_QUICKSORT(A,p,q-1);    RANDOM_QUICKSORT(A,q+1,r);    }}void main(){    int i=100;    int j;    int A[16]={10,7,5,3,2,8,14,15,16,25,24,23,20,38,18,20};    RANDOM_QUICKSORT(A,0,15);    for(j=0;j<16;j++)        printf("%d\t",A[j]);}

技术分享

快速排序