快速排序算法
#include<stdio.h>
void swap(int *p,int *q)
{
if(p==q)
return;
else
{
int tmp=*p;
*p=*q;
*q=tmp;
}
}
int Partition(int *arr,int p,int r)
{
int x=arr[r];
int i=p-1;
int j=p;
for(;j<=r-1;j++)
{
if(arr[j]<=x)
{
i=i+1;
swap(&arr[i],&arr[j]);
}
}
swap(&arr[i+1],&arr[r]);
return i+1;
}
void QuickSort(int *arr,int p,int r)
{
if(p<r)
{
int q=Partition(arr,p,r);
QuickSort(arr,p,q-1);
QuickSort(arr,q+1,r);
}
}
int main()
{
int arr[]={0,12,3,45,2,345,67,6,88,6};
int length=sizeof(arr)/sizeof(arr[0])-1;
QuickSort(arr,1,length);
int i=1;
for(;i<=length;i++)
{
printf("%d ",arr[i]);
}
system("pause");
return 0;
}