gpt4 book ai didi

java - 冒泡排序不会完全计算

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:29:54 26 4
gpt4 key购买 nike

我已经完成了这个冒泡排序算法,但它没有完全排序列表。例如,如果我有数字 10、9、8、7、6,它会将其排序为 9、8、7、6、10 并停在那里。现在以防你想知道为什么我把这个条件放在 if (i + 1 < args.length) 中这是因为在进行此比较时,由于索引递增到 5,我得到了一个 IndexOutOfBoundsException if (currentNumber > args[i + 1])

我已经摆脱了我之前做的额外代码,因为我试图对整个列表进行排序而使算法过于复杂,我已经接近工作到排序列表将无限打印的程度,这是我的事情当我把它作为一个增变器方法时,我不想这样做。此外,有些人认为我在那里所做的修改不是冒泡排序,尽管算法比较和交换元素就像冒泡排序一样。因此,这就是我决定删除之前处理​​的额外代码的原因。

我的问题是如何对整个列表进行排序?由于目前的算法还没有做到这一点。

package algorithm;

import java.util.Arrays;

public class Algorithm {

/**
* @param args the command line arguments
*/
private static int list[] = {10, 9, 8, 7, 6};

public Algorithm() {
}

public static void main(String[] args) {

Algorithm alg = new Algorithm();

alg.bubblesort(list);

}

public int[] bubblesort(int[] args) {
for (int i = 0; i < args.length; i++) {

int currentNumber = args[i];
if (i + 1 < args.length) {
if (currentNumber > args[i + 1]) {
args[i] = args[i + 1];
args[i + 1] = currentNumber;
}
}

}
System.out.println(Arrays.toString(args));
return args;
}
}

最佳答案

冒泡排序是使用两个嵌套循环完成的,您只有将最大数字移动到数组最后一个索引的内部循环,您需要像这样添加外部循环:

for (int j = 0; j < args.length; j++) {
for (int i = 0; i < args.length - j; i++) {
int currentNumber = args[i];
if (i + 1 < args.length) {
if (currentNumber > args[i + 1]) {
args[i] = args[i + 1];
args[i + 1] = currentNumber;
}
}
}
}

关于java - 冒泡排序不会完全计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18646850/

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