10 快速排序-左右指针法

发布时间:2024年01月19日

void QuickSort(int *arr, int begin, int end)
{
? ? ? ? if (begin >= end)
? ? ? ? {
? ? ? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? int left = begin;
? ? ? ? int ?right = end;
? ? ? ? int key = begin;
? ? ? ? while (begin < end)
? ? ? ? {
? ? ? ? ? ? ? ? while (end>begin && arr[end] >= arr[key])
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? --end;
? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? while (end>begin && arr[begin] <= arr[key])
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ++begin;
? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? swap(arr[begin], arr[end]);
? ? ? ? }

? ? ? ? swap(arr[end], arr[key]);
? ? ? ? key = end;
? ? ? ? QuickSort(arr, left, key - 1);
? ? ? ? QuickSort(arr, key + 1, right);
}
?

文章来源:https://blog.csdn.net/xlfdlbx/article/details/135705455
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。