gpt4 book ai didi

java - 调试 SelectionSort 方法时出现问题

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

所以我在测试这段代码时注意到:

public class SelectionSort{

public static void sorted(int[] array){

for (int i = 0; i < array.length - 1; i++) {
int key = array[i];
int index = i;

for (int j = 0; j < array.length; j++) {
if (array[j] < array[i]) {
key = array[j];
index = j;
}
}

int temp = array[i];
array[i] = array[index];
array[index] = temp;
}
}

//test function
public static void main(String[] args) {
int[] array = new int[]{4,3,6,7,1};
sorted(array);

for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}

我得到输出:{3,1,4,6,7} 显然没有排序。但是当我从 for(int j = 0; j < array.length; j++) 更改内循环计数器时至 for(int j = 1; j < array.length; j++)我得到了 {1,3,4,6,7} 的正确输出。好奇为什么这在逻辑上会发生。

最佳答案

基本思想是,从外循环的单次迭代开始,它将数组中的最大元素带到数组的末尾。

因此从下一次迭代开始,您可以跳过数组中的最后一个元素

for (int j = 0; j < array.length  - i; j++)

但是你需要不断地检查第一个元素和它最近的元素。

关于java - 调试 SelectionSort 方法时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477365/

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