一、概述
基本思想:在未排序序列当中找到最小(最大)元素,然后将最小(最大)元素放到排序序列的末尾,依次类推,直到排序完毕。
排序方法 | 时间复杂度(平均) | 时间复杂度 (最坏) | 时间复杂度(最好) | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 不稳定 |
1.1、算法说明
外循环定义一个变量 i 控制循环过程,当 i = arr.length-1 的时候循环结束。然后内循环找出最小值,交换。
1.2、代码实现
public static void selectSort(int[] a) { for (int i = 0; i < a.length; i++) { int min = i;//无序区中最小元素位置 // 找出"a[i+1] ... a[n]"之间的最小元素,并赋值给min。 for (int j = i + 1; j < a.length; j++) { if (a[j] < a[min]) min = j; } // 若min!=i,则交换 a[i] 和 a[min]。 // 交换之后,保证了a[0] ... a[i] 之间的元素是有序的。 if (min != i) { int tmp = a[i]; a[i] = a[min]; a[min] = tmp; } } }
代码地址:地址 中的rithm-001-sort中 SelectSort
大树