Проблема с моим алгоритмом быстрой сортировки. Код компилируется без каких-либо ошибок, но когда я пытаюсь запустить программу, единственным выходом, который я получаю, является «Случайные числа:», а затем действует так, как будто хочет ввода от пользователя, а затем мне нужно убить программу. Теперь, когда я удаляю вызов моей функции quicksort в моей основной программе, программа выводит цифры, но не работает с вызовом функции quicksort. Я не уверен, являются ли параметры, которые я использую, проблемой, или если это сама функция.Ошибка алгоритма быстрого сортировки
#include <iostream>
#include <stdlib.h>
#include <iomanip>
#include <stack>
#include <queue>
using namespace std;
void quicksort(int arr[], int left, int right) {
int l = left;
int r = right;
int tmp;
int pivot = arr[(left + right)/2];
while (l <= r) {
while (arr[l] < pivot)
l++;
while (arr[l] > pivot)
r--;
if (l <= r) {
tmp = arr[l];
arr[l] = arr[r];
arr[r] = tmp;
l++;
r--;
}
}
if (left < r)
quicksort(arr, left, r);
if (l < right)
quicksort(arr, r, right);
}
int main() {
int n = 20;
int testlist[n];
for (int i = 0; i<n; i++) {
testlist[i] = rand()%100;
}
cout << "The random numbers are: " << endl;
for (int i = 0; i < n; i++) cout << testlist[i] << " ";
quicksort(testlist, 0, n - 1);
cout << " " << endl;
cout << "The sorted numbers are: " << endl;
for (int i = 0; i < n; i++) {
cout << testlist[i] << " ";
}
return 0;
}
Одно из предложений: простая буква 'l' (буква L в нижнем регистре) очень похожа на' 1', которая сбивает с толку при чтении кода. –