#include<stdio.h>
int get_length(int *A);//获得数组中元素个数
int quik_partition(int *A,int p,int r);//进行一趟快排
int exchange(int *a,int *b);//交换元素
void quik_sort(int *A,int p,int r);//快速排序控制函数
int main()
{
int i=0;
int A[15]={35,86,8,111,8,44,99,34,24,68,34,17,96,33};
quik_sort(A,0,get_length(A)-1);
for(i=0;i<get_length(A);i++)
printf("%6d",A[i]);
return 1;
}
int get_length(int *A)
{
int len=0;
while(A[len]!='\0')
len++;
return len;
}
int quik_partition(int *A,int p,int r)
{
int i,j,x;
//init. i和j均指向首段
i=p;
j=p;
x=A[r];//最后一个元素作枢轴
for(i=p;i<=r-1;i++)
{
if(A[i]<=x)
{
exchange(A+i,A+j);
j++;
}
}
exchange(A+j,A+r);
return j;
}
void quik_sort(int *A,int p,int r)
{
int pivot;
pivot=quik_partition(A,p,r);
if(p<pivot)
quik_sort(A,p,pivot-1);
if(r>pivot)
quik_sort(A,pivot+1,r);
}
int exchange(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
return 0;
}