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

标签 java arrays sorting data-structures selection-sort

无法弄清楚为什么我的选择排序作为 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/

相关文章:

java - 从 Java 填写 Google 表单

java - Android 共享首选项崩溃

java - 在整个应用程序中仅将属性加载到应用程序中一次

javascript - 在对象中创建动态键

list - 调用降序排序或仅对列表进行排序并反转它更好吗?

java - 我总是超出这个数组的范围......为什么?

Java : Map showing error : bad operand type for binary operator "+"

php - 如何验证我的 PHP 数组的结构?

c# - Array.Length 和 Array.Count() 之间的区别

javascript - 计算多维数组的平均值