#include<stdio.h>
int partition(int A[],int p,int r)
{
int x=0;int i=0;
int temp=0;
int temp1=0;
int j=0;
int k=0;
x=A[r];
i=p-1;
printf("before A[r] is %d\n",A[r]);
for(j=p;j<=r-1;j++)
{ if(A[j]<=x)
{
i++;
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
temp1=A[i+1];
A[i+1]=A[r];
A[r]=temp1;
printf("after A[r] is %d\n",A[r]);
for(k=0;k<8;k++)
printf(" numbers[%d] is %d\n",k,A[k]);
printf("\n");
return i+1;
}
void quicksort(int numbers[], int p,int r)
{
int q=0;
if (p<r){
q=partition(numbers,p,r);
quicksort(numbers,p,q-1);
quicksort(numbers,q+1,r);
}
}
int main(void)
{
int numbers[]={5,2,4,6,1,3,22,36};
int i=0;
quicksort(numbers,0,7);
for(i=0;i<8;i++)
printf("%d ",numbers[i]);
return 0;
}
快速排序:最坏o(n²) 最好o(nlgn) 平均o(nlgn)