"选择排序"算法-之通俗易懂原理讲解-java编程

来源:互联网 发布:扫描sql注入点 编辑:程序博客网 时间:2024/05/18 18:47
   现在给大家讲一下java最基础的排序算法之一,也是必会的排序算法:选择排序,下面我先讲解选择排序的特点,在通过图片解析和代码解析帮组大家更好的理解.

1.概念

"选择排序"就是第0个逐步和后面全部的比,比完0位置就得到最小的数,紧接着再从1位置对比后面的元素,以此类推,逐步得到从小到大的值.

2.特点:

一.每次比当前位到后面的所有

     1.第一轮:0位开始,比后面全部值,1轮后:得到最小值在0位置     2.第二轮:1位开始,比后面全部值,2轮后:得第2小在1位置     3.第二轮:2位开始,比后面全部值,3轮后:得第3小在2位置     4.第二轮:3位开始,比后面全部值,4轮后:得第4小在3位置

二.最终得到从左到右到大的值


3.图解原理:

int[] arr = { 4, 2, -6, 9, 1 }
这里写图片描述


4.代码详情

/** * 选择排序 *  * 总思路: * 1.每次比当前位到后面的所有 *      1.第一轮:0位开始,比后面全部值,1轮后:得到最小值在0位置 *      2.第二轮:1位开始,比后面全部值,2轮后:得第2小在1位置 *      3.第二轮:2位开始,比后面全部值,3轮后:得第3小在2位置 *      4.第二轮:3位开始,比后面全部值,4轮后:得第4小在3位置 * 2.最终得到从左到右到大的值 *  */public class Demo02 {    public static void main(String[] args) {        int[] arr = { 4, 2, -6, 9, 1 };// 角标0-4,length=5;        print(arr, "初始");        selectSort(arr);        print(arr, "结果");    }    private static void selectSort(int[] arr) {        for (int i = 0; i < arr.length - 1; i++) {// 效率-1 倒数第二个和倒数第一比            for (int j = i + 1; j < arr.length; j++) {                if (arr[i] > arr[j]) {                    swap(arr, i, j); // 替换                }            }            print(arr, "第" + (i + 1) + "轮");        }    }    //替换方法    private static void swap(int[] arr, int i, int j) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }    //打印数组    private static void print(int[] arr, String str) {        for (int i = 0; i < arr.length; i++) {            if (i != arr.length - 1) {                if (i == 0) {                    System.out.print("[" + arr[i] + ",");                } else {                    System.out.print(arr[i] + ",");                }            } else {                System.out.println(arr[i] + "]" + "----" + str);            }        }    }}

结果

[4,2,-6,9,1]----初始[-6,4,2,9,1]----第1轮[-6,1,4,9,2]----第2轮[-6,1,2,9,4]----第3轮[-6,1,2,4,9]----第4轮[-6,1,2,4,9]----结果

5.总结

记住要点,0位置逐步比后面的角标得到最小值;再到1位置得到倒数第二小;同理分别得到从小到大的值.
0 0