java - 从最大到最小的排序 - 最大的是无序的

标签 java algorithm sorting

我试图让这个排序算法对数组中的最大到最小进行排序。这是我拥有的:

private void sort(int[] data) {
    int min;
    for (int index = 0; index < data.length - 1; index++) {
        min = index;
        for (int scan = index + 1; scan < data.length; scan++) {
            if (data[scan] > data[min]) min = scan;
            swap (data, min, index);
        }
    }
}

private void swap(int[] data, int pos0, int pos1) {
    int temp = data[pos0];
    data[pos0] = data[pos1];
    data[pos1] = temp;
}

输出是:

3 3 4 2 2 2 2 1 1 1 1 1 1

为什么第二大数乱序了?

我一直在研究这个,但我显然遗漏了一些东西。

最佳答案

您正在关闭 if 声明

 if (data[scan] > data[min]) min = scan;
            swap (data, min, index);

swap() 将被调用而不考虑 if 条件

关于java - 从最大到最小的排序 - 最大的是无序的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445262/

相关文章:

java - 如何从 txt.file RESTful Java 中删除

java - 带有 @FormParam 的 PUT 方法

algorithm - 该算法对于查找最长递增子序列是否正确?

vb.net - 在 Visual Basic 中将实数转换为小数

Java 初学者 : How key gets sorted in hashmaps?

对不需要不同的 n 个正整数键的列表 L 进行排序的算法。应该具有 O(n+N) 的复杂性,其中 N = maxL(i) - minL(i)

java - CPLEX 得到目标函数的系数

python - 生成带有约束的所有可能的组合

c - 我们如何在C中定义和使用函数内的结构?

java - Android Parcelable 转换错误