一.选择排序介绍
选出最小的一个数与第一个位置的数交换
二.选择排序原理分析
第1趟比较:拿第1个元素依次和它后面的每个元素进行比较,如果第1个元素大于后面某个元素,交换它们,经过第1趟比较,数组中最小的元素被选出,它被排在第一位
第2趟比较:拿第2个元素依次和它后面的每个元素进行比较,如果第2个元素大于后面某个元素,交换它们,经过第2趟比较,数组中第2小的元素被选出,它被排在第二位
……
第n-1趟比较:第n-1个元素和第n个元素作比较,如果第n-1个元素大于第n个元素,交换它们
三.选择排序代码实现
1 | public static void selectionSort(int[] nums) { |
四.选择排序的优化
使用临时变量存储最小值的角标值,减少交换的次数
1 | public static void selectSort(int[] numbers) { |
五.选择排序的时间复杂度
时间复杂度:O(n²)
空间复杂度:O(1),只需要一个附加程序单元用于交换
稳定性:选择排序是不稳定的排序算法,因为无法保证值相等的元素的相对位置不变,例如 [3, 4, 3, 1, 5]这个数组,第一次交换,第一个3和1交换位置,此时原来两个3的相对位置发生了变化。
本帖附件
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站