gpt4 book ai didi

c - 这个快速排序有什么问题吗?

转载 作者:行者123 更新时间:2023-11-30 18:57:08 27 4
gpt4 key购买 nike

快速排序。代码是用纯 C 语言编写的。这个算法实现有什么问题吗?

void quick_sort(void *base, size_t num, size_t size, int (*comp)(const void*, const void*)) {
unsigned int i = 0, j = num-1;
int rpos = rand() % num;
do {
while(comp((char*)base + size*i, (char*)base + rpos*size) < 0) i++;
while(comp((char*)base + size*j, (char*)base + rpos*size) > 0) j--;
if (i <= j) swap((char*)base + size*i++, (char*)base + size*j--, size);
} while (i <= j);
if (i < num) quick_sort((char*)base, j, size, comp);
if (j > 0) quick_sort((char*)base + size*i, num - i, size, comp);
}

陷入无限递归。

最佳答案

应该有 if(i<=j) swap 和 do 。 。 。 while(i<=j) 不仅仅是 (i < j )。并且交换后还需要增加 i 并减少 j。

http://www.algolist.net/Algorithms/Sorting/Quicksort有示例代码非常容易理解:)

关于c - 这个快速排序有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22102202/

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