基本思想:初始时选择一个基准值,把待排序列分为两部分:一部分是小于基准值的,另一部分是大于基准值的;然后在对两部分进行上述过程,直至整个记录有序;
// 一趟快速排序
int Partition(int arr[],int first,int end)
{
int i = first;
int j = end;
int temp = 0;
while(i<j)
{
while(arr[i]<arr[j]) j--;
if(i<j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
}
while(arr[i]<arr[j]) i++;
if(i<j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
j--;
}
}
return i;
}
//快速排序递归
void QuickSort(int arr[],int first,int end)
{
int flag;
if(first<end)
{
flag = Partition(arr,first,end);
QuickSort(arr,first,flag-1);
QuickSort(arr,flag+1,end);
}
}