我在網站上發現了快速排序的實現。它是:在快速排序後打印出數組的元素
#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()的末尾加了一個位來打印數組。這是正確的方法嗎?一旦我添加該部分,我就開始出現分段錯誤錯誤。我如何解決它?
編譯所有警告和調試信息('GCC -Wall -g')則**使用調試器** ('gdb')。但是你真的應該使用C++ 11和它的'std :: sort' – 2014-09-23 12:23:14
'main'壞了。我的建議是遠離你發現它的地方。 – molbdnilo 2014-09-23 12:49:18
'main'不會編譯。 – 2014-09-23 13:51:18