选择排序代码优化

Posted Java算法编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序代码优化相关的知识,希望对你有一定的参考价值。

一. 简单介绍

    

      选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。

时间复杂度O(N^2),额外空间复杂度O(1)。


二. 思路


    选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换,…, 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。


思路分析图

 


三. 代码实现


  public static void main(String[] args) {

        int[] arr = new int[]{875312};

        System.out.println("原数组 : " + Arrays.toString(arr));

        for (int i = 0; i < arr.length - 1; i++) {
            // 假定最小值下标是0
            int minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                // 判断最小值与当前值的大小,把小的下标赋值给minIndex
                minIndex = arr[j] < arr[minIndex] ? j : minIndex;
            }
            // 如果最小值发生变化,则与原来的最小值交换
            swap(arr, i, minIndex);
        }

        System.out.println("排序好的数组 : " + Arrays.toString(arr));
    }

    private static void swap(int[] arr, int i, int j) {
        // 交换
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }


总结:我认为这个选择排序之所以好,就是因为这个排序减少了一波小代码,你可以看我前面正常的选择排序,做一下对比,选择出你喜欢的排序。


以上是关于选择排序代码优化的主要内容,如果未能解决你的问题,请参考以下文章

优化 C# 代码片段、ObservableCollection 和 AddRange

单片机C语言编程代码优化

选择排序的算法和优化

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

超详细总结基于比较的七大经典 排序 -- 不会的童鞋快进来补习

基于比较的七种常见排序算法