选择排序:

选择排序算法的实现思路类似插⼊排序,也分已排序区间和未排序区间。但是选择排序每次会从未
排序区间中找到最⼩的元素,将其放到已排序区间的末尾。

图示:

选择排序--选择排序

代码实现: 

class SortWork {
    public static void printArray(int[] array) {//工具方法
        for (int i : array) {
            System.out.print(i + " ");
        }
    }
}

public class Bubble {

    public static void main(String[] args) {
        int[] array = new int[]{2, 5, 4, 3, 7, 6, 1, 5};
        selectionSort(array);
        SortWork.printArray(array);
    }
    
    public static void selectionSort(int[] array) {
        int n = array.length;
        if (n <= 1) {
            return;
        } else {
            for (int i = 0; i < n - 1; i++) {
                int minIndex = i;
                for (int j = i + 1; j < n; j++) {
                    if (array[j] < array[minIndex]) {
                        minIndex = j;
                    }
                }
                int temp = array[minIndex];
                array[minIndex] = array[i];
                array[i] = temp;
            }
        }
    }
}

演示结果:

选择排序--选择排序

 复杂度分析:

选择排序空间复杂度:

 O(1),是⼀种原地排序算法。

时间复杂度:

选择排序的最好情况时间复杂度、最坏情况和平均情况时间复杂度都为 O(n^2)。

稳定性:

不稳定

相关文章: