Я пытался:
void a_quick(int array[], int i, int j){
//Array Quick Sort
if ((j - i) < 2){
return;
}
int top = j;
int bot = i;
int p_location = (j - i) / 2;
int pivot = array[p_location];
while (i < j){
while (array[i] < pivot){
i++;
}
while (array[j] > pivot){
j--;
}
if (i <= j){
std::swap(array[i], array[j]);
i++;
j--;
}
}
a_quick(array, bot, p_location);// problem is most likely here
a_quick(array, p_location, top - 1);// or here
}
int main()
{
// int d[] = { 5, 1, 6, 4, 8, 2, 3, 7, 9, 0};
int d[] = { 5, 1, 6, 4, 8, 2, 3, 7, 0, 9};
a_quick(d, 0, 9);
std::copy(d, d+10, std::ostream_iterator<int>(std::cout));
}
> g++ sort.cpp
> ./a.exe
0124356789 >
И все работало нормально.
То, что нам действительно нужно, это пример того, как это не удалось.
Надеюсь, с полным комплектом тестов, который просто компилируется и запускается и показывает ошибку.