gpt4 book ai didi

java - 选择排序错误

转载 作者:行者123 更新时间:2023-12-02 07:07:18 24 4
gpt4 key购买 nike

我尝试了许多不同的变体,但总是遇到同样的问题。选择 nsort 运行后,输出的项目数与我的数组的大小不匹配。我已经运行过任何大小为 10 的数组,但输出不包含 10 个数字。然而,选择排序的输出是排序的。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Sorts {

public static Integer[] createArray(int size) {
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < size; i++)
list.add(i);
Collections.shuffle(list);
Integer[] array = list.toArray(new Integer[list.size()]);
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
}
return array;

}

public static void selectionSort(Integer[] array) {
Integer min;
for (Integer i = 0; i < array.length - 1; i++) {
min = i;
for (Integer j = i + 1; j < array.length; j++) {
if (array[j].compareTo(array[min]) > 0) {
min = j;
}
}
if (min != i) {
Integer temp = array[i];
array[i] = array[min];
array[min] = temp;
System.out.print(array[i]);

}

}
}

public static void main(String args[]) {
int number = 10;
Integer[] list = createArray(number);
System.out.println("");
selectionSort(list);

}

}

最佳答案

每当你进行交换时,你都会打印出一个数字。但在一个包含 10 个元素的数组中,您只需进行 9 次交换——最后一个元素已经位于正确的位置了!要解决此问题,请将 System.out.print(array[array.length - 1]); 添加到函数末尾。

此外,如果最小元素恰好是 i,则不会执行交换,也不会打印任何元素。这仍然会对数组进行排序,但如果您希望将其打印出来,您可以删除 if (min != i) 语句,并在每次遍历列表时进行交换。

您还应该考虑使用 int 而不是 IntegerInteger 通常比 int 慢,并且通常仅在 Java 需要对象时才使用它们。

关于java - 选择排序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939643/

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