Java 快速排序测试仪调试
对于Java 快速排序测试仪调试,java,Java,对于快速排序,我有以下4种分区方法的代码。现在,如果我运行代码,各个分区的性能如下 分区0的性能是1877 第二分区是781 第3674条 第四分区大约是595 对于不同的机器和不同的时间,数字可能会有所不同。我现在无法分辨每个分区的bug,我有几个问题: 我注意到partition0和partition1之间的唯一区别是while循环的条件:one具有 我不是百分之百确定,但我相信这是因为“最后一个”和“第一个”用于检查左右索引是否满足要求。如果是这样,交换将不会发生,如果第一个和最后一个an
快速排序
,我有以下4种分区方法的代码。现在,如果我运行代码,各个分区的性能如下
do {
// Search forward from left
while (first < last && list[first].compareTo(pivot) <= 0)
first++;
// Search backward from right
while (first <= last && list[last].compareTo(pivot) > 0)
last--;
// Swap two elements in the list
if (last >= first) {
swap(list, first, last);
first++;
last--;
}
} while (last > first);
do{
//从左向前搜索
while(firstfirst);
它将始终执行do first的内部,然后如果last>first,将继续执行,直到语句为false
do {
// Search forward from left
while (first < last && list[first].compareTo(pivot) <= 0)
first++;
// Search backward from right
while (first <= last && list[last].compareTo(pivot) > 0)
last--;
// Swap two elements in the list
if (last >= first) {
swap(list, first, last);
first++;
last--;
}
} while (last > first);