快速排序--前后指针法,它是用前后指针法来实现快速排序,接下来看一看如何实现它的吧
请看一下图解
//lomuto前后指针法
int _QuickSort2(int* arr, int left, int right)
{
int prev = left, cur = left + 1;
int key = left;
while (cur <= right)
{
if (arr[cur] < arr[key] && ++prev != left)
{
Swap(&arr[prev], &arr[cur]);
}
cur++;
}
Swap(&arr[key], &arr[prev]);
return prev;
}
void QuickSort(int* arr, int left, int right)
{
if (left >= right)
{
return;
}
//【right, left】找基准值mid
int key = _QuickSort2(arr, left, right);
//【left,mid-1】
QuickSort(arr, left,key-1);
//【mid+1,right】
QuickSort(arr, key + 1,right);
}