быстрой сортировки я попытался реализовать быструю сортировку по массивам int64_t
так:Нескончаемый
void quicksort (int64_t *array,size_t size) {
int64_t *split;
size_t i=0;
size_t j=size-1;
if (size>1) {
split=({
int64_t p=array[0];
do {
for (;array[i]<p;i++);
for (;array[j]>p;j--);
swap(array[i],array[j]);
} while (i<j);
swap(array[i],array[j]);
swap(array[j],array[size]);
&(array[j]);
})-1;
quicksort(array,j-1);
quicksort(split+1,size-j);
}
return;
}
это хорошо, однако, она входит в бесконечную рекурсию или бесконечный цикл сразу же после первого разделения прохода. Как я могу это решить?
подкачки определяется как макро: '#define подкачки (A, B) ({\ TypeOf (а) __c = (а); \ а = Ь; \ Ь = __ с; \ })' –
«* Как я могу это решить? *" Компилировать с символами (опция '-g' для gcc) и запускать код в отладчике (gdb для gcc), что позволяет проследить его шаг за шагом и проверить все соответствующие переменные , – alk
0) когда [5,5,5] _infinite loop_ на do-while. 1) 'array [size]' находится за пределами границ. – BLUEPIXY