gpt4 book ai didi

java - 如何编写快速排序分区函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:00 24 4
gpt4 key购买 nike

这让我抓狂,我知道这是一次性错误造成的,但出于某种原因,我的分区函数没有正确分区。我做错了什么?

public static int partition(int numbers[], int lhs, int rhs) {
int pivot = numbers[(rhs - lhs) / 2];
int lIndex = lhs - 1;
int rIndex = rhs + 1;

while (true) {
while (numbers[++lIndex] < pivot);
while (numbers[--rIndex] > pivot);

if (lIndex > rIndex) break;

int temp = numbers[lIndex];
numbers[lIndex] = numbers[rIndex];
numbers[rIndex] = temp;
}

return lIndex;
}

最佳答案

最好找到枢轴点(在你的情况下是中点):

int pivot = numbers[lhs + (rhs - lhs)/2];

如果 lhs 和 rhs 足够高,它可以防止 lhs+rhs 导致整数溢出。

关于java - 如何编写快速排序分区函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18167528/

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