携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
选择排序
选择排序是逐次遍历选择最小(大)的数放在已排序序列的末尾直到最后完全排序
1.1 算法描述
- 遍历元素
- 找到最小值,记录下标
- 修改最小值和当前遍历元素的位置
- 重复直到完全排序
1.2 演示
1.3 代码实现
public void selectionSort(int[] nums) {
for (int i = 0; i < nums.length; i++) {
int min = i;
// 遍历一次找到最小值,记录下标
for (int j = i; j < nums.length; j++) {
if (nums[j] < nums[min]) {
min = j;
}
}
// 修改最小值和当前遍历元素的位置
int temp = nums[i];
nums[i] = nums[min];
nums[min] = temp;
}
}
1.4 总结
选择排序,稳定的时间复杂度O(n^2)的算法,空间复杂度也为O(1)