Java - 选择排序算法

标签 java sorting selection

我有一些关于选择排序的问题。我有点困惑。

 int [] arr = {5,4,3,2,1}; // This is my array
    int min = 0;

    for(int i = 0;i<arr.length;i++)
    {
        //Assume first element is min
        min = i;//Selection sort algorithm says that find the minimum in the
                // array, but first element is not minimum.What's point here?
        for(int j = i + 1;j<arr.length;j++)
        {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            System.out.println(arr[i]);//I print the in ascending order 
        }
    }

输出是:

4
3
2
1
4
3
2
4
3
4

怎么了?

最佳答案

选择排序就是在循环的每一步中寻找最小值。你没有找到最小值(可能是通过 if 语句),只是简单地在你的内部循环中交换值。所以你实际上没有做任何排序。

根据您的实现进行更正:

final int[] arr = { 5, 4, 3, 2, 1 }; // This is my array
    int min;
    for (int i = 0; i < arr.length; i++) {
        // Assume first element is min
        min = i;
        for (int j = i + 1; j < arr.length; j++) {
            if (arr[j] < arr[min]) {
                min = j;

            }
        }
        if (min != i) {
            final int temp = arr[i];
            arr[i] = arr[min];
            arr[min] = temp;
        }
        System.out.println(arr[i]);// I print the in ascending order
    }

这应该给你输出:

1
2
3
4
5

关于Java - 选择排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8362640/

相关文章:

Java如何将加载的类参数类型作为泛型参数传递?

java - 按钮点击计数器android

c - 如果在冒泡排序程序中输入偶数个整数,则在中间插入一个随机数

css - 未知伪元素或伪类::selection [selection]

php - 从我网站上可用的头像图像更改用户头像?

java - 从 Jenkins 运行 .bat 文件

java - Spring:@Component 与 @Bean

algorithm - 遗传算法代码中的排序选择

java - 按字母顺序重新排序字符串变量

php - 可以在 PHP 中将闭包传递给 usort 吗?