算法很难?三分钟带你掌握经典算法「选择排序」


算法很难?三分钟带你掌握经典算法「选择排序」


一、选择排序介绍

选择排序(Selection sort)是一种简单直观的排序算法。

二、算法思想

第 1 趟 从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置;

然后再从剩余的未排序元素中寻找到最小(大)元素,放到已排序的序列的末尾。

以此类推,直到全部待排序的数据元素的个数为零,元素全部有序。

三、实现过程

规律:

第 1 趟:从n个数据中找出最小的数据和第一个数据交换;

第 2 趟:从第二个数据开始的n-1个数据中再选出最小的数据与第二个数据交换;

以此类推…

第 i 趟,则从第 i 个数据开始的 n-i+1 个数据中选出最小的数据与第i个数据交换,直到整个序列有序。

四、代码实现

<code>public class SelectSort {    public static void main(String[] args) {        System.out.println("输入要排序的值,输入的每个值用逗号隔开:");        Scanner input = new Scanner(System.in);        String str = input.nextLine();        // 将字符串按照","拆分成字符串数组        String[] strArray = str.split(",");        // 新建数组用来存储拆分出来的每个值        int[] array = new int[strArray.length];        // 给数组循环遍历赋值        for (int i = 0; i < strArray.length; i++) {            array[i] = Integer.parseInt(strArray[i]);        }        System.out.println("排序前的数组:" + Arrays.toString(array));        // 排序        selectSort(array);        System.out.println("排序后的数组:" + Arrays.toString(array));    }    /**     * 选择排序     *     * @param array 待排序的数组     */    private static void selectSort(int[] array) {        //判断数组为空或为一个元素的情况        if (null == array || array.length <= 1) {            return;        }        for (int i = 0; i < array.length - 1; i++) {            int tempIndex = i; // 当前最小元素的索引            int temp = array[i]; // 临时变量为当前最小元素            // 循环遍历待排序的数组            for (int j = i + 1; j < array.length; j++) {                // 如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量                if (temp > array[j]) {                    temp = array[j];                    tempIndex = j;                }            }            // 如果临时变量发生改变,则说明有比当前外层循环位置更小的元素,需要将这两个元素交换位置            if (tempIndex != i) {                array[tempIndex] = array[i];                array[i] = temp;            }            System.out.println("   第" + (i + 1) + "趟后:" + Arrays.toString(array));        }    }}/<code>


五、执行结果:

算法很难?三分钟带你掌握经典算法「选择排序」

六、更多算法学习

算法很难?三分钟带你掌握经典算法「选择排序」

帮忙转发文章后,关注私信回复【学习】即可获取算法相关视频及文档


分享到:


相關文章: