思路讲解在此这是一个包含多个递归调用的递归
#include<iostream>
using namespace std;
const int arrSize = 10;
void quick_sort(int arr[], int left, int right);
int main(void)
{
int num[arrSize]{ 6, 4, 3, 9, 7, 5, 1, 0, 8, 2 };
quick_sort(num, 0, arrSize - 1);
for (int i = 0; i < arrSize; i++)
{
cout << num[i];
}
cout << endl;
cin.get();
return 0;
}
void quick_sort(int arr[], int left, int right)
{
if (left >= right)
return;
int i = left, j = right, middle = 0;
while (true)
{
while (arr[j] > arr[left]) j--;
while (arr[i] <= arr[left] && i != j) i++;
if (i != j)
{
swap(arr[i], arr[j]);
}
else
{
swap(arr[left], arr[i]);
middle = i;
break;
}
}
quick_sort(arr, left, middle - 1);
quick_sort(arr, middle + 1, right);
}
网友评论