Как видно из названия, я пытаюсь написать код для быстрой сортировки, но я пытаюсь сделать это в соответствии с псевдокодом, данным нам в лекции. Это не задание, потому что я просто пытаюсь понять это самостоятельно. Я нашел образец QuickSort онлайн, но он выглядит не так, как говорит наш psuedocode. Код QuickSort, который я нашел в Интернете, использует указатели, я не думаю, что указатели упоминаются в данном psuedocode. Другими словами, может ли кто-нибудь проверить, нахожусь ли я на правильном пути, и, возможно, указать, где я все испортил. Спасибо!
Мой код
#include <iostream>
using namespace std;
int Partition(int arr[], int p, int r)
{
int x = arr[r];
int i = p - 1;
for (int j = p; j < r - 1; j++)
{
if (arr[j] <= x)
{
i = i + 1;
swap(arr[i], arr[j]);
}
swap(arr[i + 1], arr[r]);
}
return i + 1;
}
void Quicksort(int arr[], int p, int r)
{
if (p < r)
{
int k = Partition(arr, p, r);
Quicksort(arr, p, k - 1);
Quicksort(arr, k + 1, r);
}
}
void print(int arr[], int n)
{
int i;
for (i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
}
int main()
{
int arr[] = { 5, 3, 4, 9, 10 };
int n = sizeof(arr) / sizeof(arr[0]);
Quicksort(arr, 0, n);
print(arr, n);
//I get an error here "Stack around the variable 'arr' was corrupted"
}
Это psuedocode для моей функции QuickSort Изображение номер два - это заданный psuedocode для моей функции Partition