一、案例
1.1 代码
-
// 以从小到大递增的排序为例 public static void selectionSort(int[] nums) { // 只剩1位时无需再检查,故遍历次数设置为nums.length - 1 for (int i = 0; i < nums.length - 1; i++) { int min_index = i; // 遍历寻找后续数组中的最小元素 for (int j = i + 1; j < nums.length; j++) { if (nums[j] < nums[min_index]) { min_index = j; } } // 将在后续数组中找到的最小元素与当前位置元素交换 int temp = nums[i]; nums[i] = nums[min_index]; nums[min_index] = temp; } }
1.2 参数
- nums:待排序的数组
- min_index:后续数组中的最小元素的下标
二、原理
遍历数据集合,每一趟都在未确定的区域中寻找值最小(或者最大)的元素,加入到有序子序列中。在遍历完最后一趟(nums.length-1)时,集合中的所有元素都变得有序。
三、算法特性
- 时间复杂度:任何情况下都是o(
)
- 空间复杂度:o(1)
- 稳定性:不稳定
- 算法类型:选择排序