zoukankan      html  css  js  c++  java
  • 常用算法Java实现之选择排序

      选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序。
      具体流程如下:
      1、首先从原数组中选择最小的1个数据,将其置于第一个位置。
      2、然后从剩下的数据中再选择其中最小的一个数据,并将其置于原数组的第二个位置。
      3、不断重复选择和交换的过程,直至最后排序完成。
      假如有初始数据:25  11  45  26  12  78。
      1、第一轮排序,从原数组中选择出最小的数据,并将其置于第一个位置。第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
      2、第二轮排序,从剩下的数据中再选择出其中最小的一个数据,并将其置于原数组的第二个位置。第二轮排序后,顺序为:[11, 12, 45, 26, 25, 78]。
      ....... 
      3、最终顺序为:[11, 12, 25, 26, 45, 78]。
     
      选择排序是不稳定的排序。选择排序的时间复杂度和空间复杂度分别为 O(n2 ) 和 O(1) (选择排序只需要一个额外空间用于数组元素交换)。
      Java 代码实现如下:(https://github.com/xbk417/algorithm
    public void sort(int[] arr) {
        int tmp;
        // 第n轮排序过程中的较小数的下标
        int small;
            
        for(int i = 0; i < arr.length - 1; i++) {
            small = i;
            // 找出最小的数的下标
            for(int j = i + 1; j < arr.length; j++) {
                if(arr[j] < arr[small]) {
                    small = j;
                }
            }
            // 交换
            if(small != i) {
                tmp = arr[i];
                arr[i] = arr[small];
                arr[small] = tmp;
            }
            System.out.println(i + ":" + Arrays.toString(arr));
        }
    }    
  • 相关阅读:
    致DBA:为什么你经常犯错,是因为你做的功课不够
    Hbase的shell命令学习
    mysql通过拷贝文件实现数据快速迁移实例
    项目领导力学习总结
    放权,从鞋柜开始
    不抱怨的世界
    定投我们自己
    mysql core文件的正确打开姿势
    2017小目标
    世界是有生命的(通向财富自由之路学习笔记十五)
  • 原文地址:https://www.cnblogs.com/LeslieXia/p/5807738.html
Copyright © 2011-2022 走看看