gpt4 book ai didi

java - 快速排序中使用的异常查找和 while 循环 (Java)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:38:04 25 4
gpt4 key购买 nike

请看一下快速排序的这段代码和实现,它来自书 Data Structures and Problem Solving Using Java :

    int i, j;

for(i = low, j = high -1;;){

while(array[++i].compareTo(pivot) < 0)
;
while(pivot.compareTo(array[--j]) < 0)
;
if(i >= j)
break;
swapReferences(array, i, j);
}

我不太理解这是如何工作的。根据我的理解,for 循环只是声明起点,不包含任何关于何时完成 for 循环的规则;这是由 if 语句处理的,对吗?另外,没有括号我不清楚 while 循环。分号和缺少缩进表明它们没有嵌套。但是循环中没有实际代码。我说每个 while 是分开的,一个比较较低的值与 pivot,一个比较较高的值,当满足每个 while 循环条件时交换。当每次 for 循环继续执行该过程时,i 递增而 j 递减,直到满足 if 语句的条件,此时它从 for 循环中断?它是否正确?

编辑:更新代码以准确反射(reflect)书中的内容。

最佳答案

您的分析是正确的。 while 循环通过 ++i--j 隐式地完成它们的工作。为了更清楚,可以将其重写为

do i++; while (array[i] < pivot);
do j--; while (pivot < array[j]);

关于java - 快速排序中使用的异常查找和 while 循环 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14334951/

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