Java 选择排序算法

Posted 曾淘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 !

以上是关于Java 选择排序算法的主要内容,如果未能解决你的问题,请参考以下文章

Java 快速排序算法

Java 插入排序算法

Java 插入排序算法

Java 快速排序算法

Java 快速排序算法

Java 希尔排序算法