算法简介

简单选择排序(Select Sort)或者叫直接选择排序,可以说是排序算法中最简单的一个,同时它的思路也很简单明了,就是通过多轮选择,每轮选择中找到那个最小的数放在该轮序列的最前面,经过 array.length -1 轮之后就可以找到所有轮次中最小的那个然后从小到大的顺序就排好了。

简单选择排序一般来讲不稳定,时间复杂度 O(n^2),空间复杂度 O(1)

Java 实现

逻辑描述:

会经过多轮循环,每轮循环中先令当前轮次序列中最头部的元素为最小元素,然后遍历到序列尾找到最小的值,然后把最小元素的下标保存下来,并将头部元素和最小的那个元素交换一下位置,之后便开启下一次轮次的循环

简单来讲就是经过多轮循环,每次找到最小的那个放在头部

算法图解:
选择排序算法-简单选择排序_直接选择

代码实现:

// 简单选择排序
public static int[] selectSort(int[] arr) {
    // 第一层循环代表要经过多少轮筛选,每轮会筛选到该轮中最小的数字并放在前面
    for(int i=1; i<=arr.length-1; i++) {
        // 用来存每轮循环中最小的那个数的下标
        int mix = i - 1;
        // 第二层循环代表该轮筛选中不断循环向后找寻最小的那个数字
        for(int j=i-1; j<arr.length; j++)
            if(arr[mix] > arr[j])
                mix = j;
        int tmp = arr[i-1];
        arr[i-1] = arr[mix];
        arr[mix] = tmp;
    }
}
时间复杂度

O(n^2)

空间复杂度

O(1)

算法稳定性

一般来讲简单选择排序是不稳定的排序算法