gpt4 book ai didi

c - 快速排序示例(K&R C 书)中的错误?

转载 作者:太空狗 更新时间:2023-10-29 17:08:28 25 4
gpt4 key购买 nike

这个快速排序应该将“v[left]...v[right] 排序为递增顺序”;从 K&R 的 The C Programming Language(第二版)复制(无注释):

void qsort(int v[], int left, int right)
{
int i, last;
void swap(int v[], int i, int j);

if (left >= right)
return;
swap(v, left, (left + right) / 2);
last = left;
for (i = left+1; i <= right; i++)
if (v[i] < v[left])
swap(v, ++last, i);
swap(v, left, last);
qsort(v, left, last-1);
qsort(v, last+1, right);
}

我认为这里有一个错误

(left + right) / 2

假设左边 = INT_MAX - 1,右边 = INT_MAX。这不会由于整数溢出而导致未定义的行为吗?

最佳答案

是的,你是对的。您可以使用 left - (left - right)/2 来避免溢出。

关于c - 快速排序示例(K&R C 书)中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6486947/

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