如何解决快速排序功能中的问题?

时间:2020-12-25 12:26:57

标签: c++ sorting quicksort

嗯,任务是只用一个函数在 C++ 上编写快速排序,没有“低”和“高”变量函数参数。这是我的功能:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <chrono>
#include <utility>
using namespace std;

void print_arr(const int* arr, int size) {
    for (int i{ 0 }; i < size; i++)
        cout << arr[i] << " ";
    cout << endl;
}

void sort_quick(int* arr, int size) {
    int mid{ arr[size / 2] }, i{ 0 }, j{ size - 1 };
    while (true) {
        while (arr[i] < mid)
            i++;
        while (arr[j] > mid)
            j--;
        if (i >= j)
            break;
        else
            swap(arr[i], arr[j]);
    }
    if (j > 0)
        sort_quick(arr, j); // most likely trouble is here
    if (i < size)
        sort_quick(arr + i + 1, size - i - 1); //or here
}

int main() {
    int size{ 10 };
    int * arr{ new int[size] };
    srand(unsigned(time(nullptr)));
    for (int i{ 0 }; i < size; i++)
        arr[i] = rand() % 999 + 1;
    cout << "Quick Sort" << endl;
    sort_quick(arr, size);
    print_arr(arr, size);
}

数组由 0 到 999 的数字随机分配。 问题是这个函数只适用于小于 50 的数组。我不知道如何修复它。我该怎么办?

0 个答案:

没有答案