gpt4 book ai didi

java - 为什么 Java 中这个简单的数组排序方法在更改初始化时表现不正常?

转载 作者:行者123 更新时间:2023-12-02 09:45:44 26 4
gpt4 key购买 nike

我查找了这个数组排序方法,在更改初始 for 循环初始化时,有一件事情让我感到困惑。

原来的for循环被初始化为1

(1) for (int i = 1; i < list.length; i++)

然后我决定将其初始化为 0,因此我相应地调整了 if 语句中的 list.length 减去 1。

(2) for (int i = 0; i < list.length-1; i++)

这是完整的排序方法:-

public static void sortList(int[] list) {

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

上面代码中提到的原始四个循环正确地将以下数组 [5, 3, 10, 8] 排序为 [3, 5, 8, 10]

但我的调整结果如下:[3, 5, 10, 8]。

为什么原来的四环可以工作,而我的却不行?两个四循环不都应该运行 3 次吗?

后来我通过添加等于小于运算符解决了我的问题

(3) for (int i = 0; i <= list.length-1; i++)

但我不明白为什么它现在有效。这个新的四循环现在运行了 4 次,与原来的循环运行 3 次相反,并且都成功地对数组进行了排序。

我的问题很简单,它的答案几乎肯定也是一个简单的问题,但我太新手了,无法自己弄清楚。

为什么这两个有效:-

(1) for (int i = 0; i <= list.length-1; i++)

(2) for (int i = 1; i < list.length; i++)

但不是这个:-

(3) for (int i = 0; i < list.length-1; i++)

尽管四环 (1) 和 (3) 是相同的。

最佳答案

因为(2) for (int i = 0; i < list.length-1; i++)简单地忽略 list.length-1输入数组的元素。它永远不会被处理,因此它将始终保留在初始数组中的最后一个位置。

循环 (1) 和 (3) 不相同,因为 (1) for (int i = 0; i <= list.length-1; i++)将处理最后一个元素。

关于java - 为什么 Java 中这个简单的数组排序方法在更改初始化时表现不正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56678991/

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