Я нашел реализацию quicks на веб-сайте. Вот он:Распечатка элементов массива после quicksort
#include <iostream>
#include <algorithm>
int partition (int arr[], int l, int h)
{
int x = arr[h];
int i = (l - 1);
for (int j = l; j <= h- 1; j++)
{
if (arr[j] <= x)
{
i++;
std::swap(arr[i], arr[j]);
}
}
std::swap(arr[i + 1], arr[h]);
return (i + 1);
}
/* A[] --> Array to be sorted, l --> Starting index, h --> Ending index */
void quickSort(int A[], int l, int h)
{
if (l < h)
{
int p = partition(A, l, h); /* Partitioning index */
quickSort(A, l, p - 1);
quickSort(A, p + 1, h);
}
}
int main()
{
int N;
int l = 1, h = N-1;
int i = 0;
int array[N];
std::cin >> N;
for(int j = 0; j<N; j++)
{
std::cin >> array[j];
j++;
}
quickSort(array, l, h);
for(int k = 0; k<N; k++)
{
std::cout << array[k];
}
return 0;
}
Я добавил бит в конец main(), чтобы напечатать массив. Правильно ли это? Как только я добавил эту часть, я начал получать ошибку ошибки сегментации. Как это исправить?
Compile со всеми предупреждениями и отладочной информации ('НКУ -Wall -g'), то ** использовать отладчик ** ('gdb'). Но вы действительно должны использовать C++ 11 и его 'std :: sort' –
Этот' main' сломан. Мой совет будет состоять в том, чтобы держаться подальше от того места, где вы его нашли. – molbdnilo
Это 'main' не будет компилироваться. –