gpt4 book ai didi

java - 尝试在 Java 中交换数组中的值

转载 作者:行者123 更新时间:2023-12-01 11:45:00 25 4
gpt4 key购买 nike

我使用选择方法来解决这个问题,但是遇到了一些问题。看到答案后,我在程序中发现了两个错误,然后修复了它。我很困惑为什么会出现这两个错误,有人可以帮我解释一下吗?

这是我的代码:

import java.util.Scanner;
public class JavaTest{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] myList = new int[5];
for (int i = 0; i < 5; i++){
myList[i] = input.nextInt();
}

for (int i = 0; i < 4; i++){
int j = 0;

// Why do I need to put this outside inner for loop?
int smallest = myList[i];

// Why do I need to give the value of i to index after i increase by 1?
int index = i;

for (j = i + 1; j < 5; j++){
if (smallest > myList[j]){
smallest = myList[j];
index = j;
}
}

if (index != i){
myList[index] = myList[i];
myList[i] = smallest;
}

}

for (int i = 0; i < 5; i++){
System.out.print(myList[i] + " ");
}

input.close();
}
}

最佳答案

选择算法是一种在列表或数组中查找第 k 个最小数字的算法。

您的算法每次迭代都会找到 myList.length 的最小数字 i:

第一次迭代在 0 到 4 之间

第二次迭代在 1 到 4 之间等等...

    // Why do I need to put this outside inner for loop?
int smallest = myList[i];

第一次迭代后,“smallest”的值将是列表中真正最小的数字,而不是索引 1 到 4 中最小的数字,然后内循环将不会执行任何操作。

    // Why do I need to give the value of i to index after i increase by 1?
int index = i;

您将索引初始化为(可疑的)最小数字的当前位置。如果“smallest”的当前值是迭代中的最小数字,那么第二个“for 循环”将不会执行任何操作。

然后是条件:

(index != i)

将是真实的,即使它不应该是真实的

关于java - 尝试在 Java 中交换数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29221970/

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