#include<iostream>
using namespace std;
int lomulto_partition(int arr[], int low, int high)
{
int pivot = arr[high];
int i = low-1, j;
for(j = low; j<=high; j++)
{
if(arr[j] <= pivot)
{
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i+1], arr[high]);
return (i+1);
}
void quick_sort(int arr[], int low, int high)
{
if(low < high)
{
int mid = lomulto_partition(arr, low, high);
quick_sort(arr, low, mid-1);
quick_sort(arr, mid+1, high);
}
}
int main()
{
int arr[] = {8, 4, 7, 9, 3, 10, 5};
for(int i = 0; i<7; i++)
{
cout << arr[i] << " ";
}
cout << endl;
quick_sort(arr, 0, 6);
cout << endl;
for(int i = 0; i<7; i++)
{
cout << arr[i] << " ";
}
return 0;
}
有人可以解释为什么我的代码不起作用吗?它在第一个循环中打印数组,但在第二个循环开始之前代码停止。
我试着找出错误,但找不到。 ChatGPT、Bard 和 Bing 都说代码是正确的。
改变
swap(arr[i+1], arr[high])
到
swap(arr[i], arr[high])