gpt4 book ai didi

c - 永无止境的快速排序

转载 作者:行者123 更新时间:2023-11-30 19:42:52 25 4
gpt4 key购买 nike

我尝试在 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;
}

这很好,但是,它在第​​一次分区之后立即进入无限递归或无限循环。我该如何解决这个问题?

最佳答案

您的分区代码看起来很奇怪,并且至少有一些问题:for (; a[i] < p; i++) 不保证终止。

然后,如果 j 是枢轴元素的最终位置,则左侧数组应按快速排序(array,j)而不是 j-1 排序。

关于c - 永无止境的快速排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com