• 排序——选择排序


    一、基本介绍

    ​ 冒泡排序是从带排序的数据中,按照某一排序规则(从大到小或者从小到大)选出某一元素,在依规定交换位置达到排序的目的。

    二、排序过程

    对数组[100 , 20 , 80 , 8 ] 从小到大排序过程如下:

    1. 第一趟排序
       - 从数组 [100 , 20 , 80 , 8 ] 第一个位置起找到最小值 8,将其放到第一个位置,得到数组 [8 , 20 , 80 , 100 ] 
    2. 第二趟排序
       - 从数组 [8 , 20 , 80 , 100 ]  第二个位置起找到最小值 20,将其放到第二个位置,得到排序后的数组 [8 , 20 , 80 , 100 ] 
    3. 第三趟排序
       - 从数组 [8 , 20 , 80 , 100 ]  第三个位置起找到最小值 80,将其放到第三个位置,得到排序后的数组 [8 , 20 , 80 , 100 ] 
    

    这个时候数组变排好序了。可以看出,当数组中的元素个数为 m 时,需要进行 m-1 趟排序。在每一次排序时就是找出该位置的最小值然后放到该位置。

    三、代码实现

    public static void selectSort(int[] arr) {
            if (arr == null || arr.length < 2) {//数组为空或者长度为1直接返回
                return;
            }
            int min = 0;
            int minIndex = 0;
            for (int i = 0; i < arr.length - 1; i++) {//当遍历次数为数组长度-1时,数组排序完成
                min = arr[i];//假设当前第一个值为最小值,临时变量存储最小值
                minIndex = i;//临时变量存储最小值的索引
                for (int j = i + 1; j < arr.length; j++) {//遍历从i+1个元素开始
                    if (min > arr[j]) {//当前min保存的不是最小值
                        min = arr[j];
                        minIndex = j;
                    }
                }
                if (minIndex != i) { //当前保存的值是最小值,不需要在进行赋值
                    arr[minIndex] = arr[i];
                    arr[i] = min;
                }
            }
        }
    
  • 相关阅读:
    Scala (三)集合
    为什么成为一名程序员?
    Hadoop——Yarn
    Redis(一)NoSQL简介、Redis安装 、数据类型、配置文件、发布订阅
    Java并发编程——共享模型之内存( JMM、原子性、可见性、有序性、volatile原理)
    KafkaAPI实战案例
    分布式技术原理笔记(二)分布式体系结构
    Flume 进阶
    Kafka框架基础
    Scala (二)面向对象
  • 原文地址:https://www.cnblogs.com/Mhang/p/12316380.html
Copyright © 2020-2023  润新知