有人可以解释一下代码有什么问题吗?

问题描述 投票:0回答:1
#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 都说代码是正确的。

c++ sorting data-structures quicksort partition-problem
1个回答
-1
投票

改变

swap(arr[i+1], arr[high])

swap(arr[i], arr[high])
© www.soinside.com 2019 - 2024. All rights reserved.