Java 选择排序算法

简介

前一章我们说了 Java 冒泡排序算法 ,这章我们来学习一下选择排序,老规矩,我们带着问题去学习,这样能更快的熟悉和掌握,学习如下:
1、选择排序的定义
2、选择排序的思路
3、代码实现

1.选择排序的定义

选择排序算法:基本思路是为每一个位置选择当前最小的元素。

2、选择排序的思路

  • 将第一个值看成最小值
  • 然后和后续值进行比较,找出最小值和下标,交换本次遍历的起始值和最小值
  • 直至完成第(n-1)个位置的元素选择
  • 说明:每次遍历的时候,将前面找出的最小值,看成一个有序的列表,后面的看成无序的列表,然后每次遍历无序列表找出最小值。

特别注意:原序列中的两个相同元素,比如元素为“5”,排序之后的前后相对顺序会发生了改变。

因此,我们说选择排序不是稳定的排序算法,它在计算过程中会破坏稳定性。

3.代码实现

package com.gongchao.boss;

/**
 - description: 选择排序
 - auth: zengtao
 - time: 2020-12-08 12:25
 **/
public class Main {

    public static void main(String[] args) {
        int arr[] = {9, 5, 2, 7, 4};
        //  选择排序
        sortSelect(arr);
    }

    private static void sortSelect(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            // 默认第一个是最小的。
            int min = arr[i];
            // 记录最小的下标
            int index = i;
            // 通过与后面的数据进行比较得出,最小值和下标
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]) {
                    min = arr[j];
                    index = j;
                }
            }
            //然后将最小值与本次循环的,开始值交换
            int temp = arr[i];
            arr[i] = min;
            arr[index] = temp;
            // 说明:将i前面的数据看成一个排好的队列,i后面的看成一个无序队列。每次只需要找无需的最小值,做替换
            // 打印交换后的顺序
            systemArr(arr);
        }
    }

    private static void systemArr(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println("");
    }
}

运行结果
在这里插入图片描述
结果 vs 选择排序思路

1⃣️ 找出最小值
2 5 9 7 4 正确
2⃣️ 不停的遍历,直至完成第(n-1)个的元素选择
2 4 9 7 5
2 4 5 7 9
2 4 5 7 9
3⃣️ 最终结果
2 4 5 7 9

经过验证,每一个步骤都是按照思路来的,而且都是正确的,so,选择排序总结完毕!

欢迎观看,Thanks !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值