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

   现在给大家讲一下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位置得到倒数第二小;同理分别得到从小到大的值.
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值