gpt4 book ai didi

java - 无法弄清楚为什么我的选择排序作为 java 方法的实现不能按预期工作

转载 作者:行者123 更新时间:2023-12-01 19:07:46 25 4
gpt4 key购买 nike

无法弄清楚为什么我的选择排序作为 java 方法的实现没有按预期工作。

class SelectionSort {
void SelectionSortMethod(int[] array) {
int min, temp = 0;
SwapClass swap = new SwapClass();
ArrayPrinting AP = new ArrayPrinting();
for (int i = 0; i < array.length; i++) {
min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[i] < array[min]) {
min = j;
}
}
swap.SwapMethod(array[i], array[min], temp);
}
AP.ArrayPrintMethod(array);
}
}
class SwapClass {
void SwapMethod(int x, int y, int temp) {
if(x==y) {
return;
}
temp = x;
x = y;
y = temp;
}
}
public class SelectionSortMainClass {
public static void main(String[] args) {
int[] a = { 22, -1, 34, 45, 21, -44, -33, 123, 9, 3 };
SelectionSort sort = new SelectionSort();
sort.SelectionSortMethod(a);
}
}
class ArrayPrinting {
void ArrayPrintMethod(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}

我希望数组按升序排序,但结果是原始数组。
实际输出是在 main 方法中传递的原始数组。但预期的输出是数组应按升序排序。

最佳答案

在内部for循环中,array[min]需要与array[j]而不是array[i]进行比较。

在 SwapMethod 中,数组元素没有被交换,而是变量 X 和 y 的值被交换。

关于java - 无法弄清楚为什么我的选择排序作为 java 方法的实现不能按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59518133/

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