排序算法之选择排序

82 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

选择排序

选择排序是逐次遍历选择最小(大)的数放在已排序序列的末尾直到最后完全排序

1.1 算法描述

  • 遍历元素
  • 找到最小值,记录下标
  • 修改最小值和当前遍历元素的位置
  • 重复直到完全排序

1.2 演示

选择排序.gif

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)