zoukankan      html  css  js  c++  java
  • 排序——选择排序

    一、基本介绍

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

    二、排序过程

    对数组[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;
                }
            }
        }
    
  • 相关阅读:
    Java类加载文章2(z)
    Java类加载文章1(z)
    Java类加载文章2(z)
    网页的文档对象模型
    网页元素的比例长度
    CSS 中三栏布局的实现
    CSS 中双栏布局的实现
    在浏览器中打开本地文件1
    Oracle Oracle UTL_RAW类
    SVN完整安装及简略使用
  • 原文地址:https://www.cnblogs.com/Mhang/p/12316380.html
Copyright © 2011-2022 走看看