简介

选择排序是在每次遍历 nums 数组时,找到最大元素的下标 max (相同元素取下标大的 ),然后将 max处的元素与结尾(这里结尾是指未排序部分的尾部)处的元素交换,保证每次遍历最大元素放到结尾。

效率

  • 时间复杂度:选择排序 - 图1
  • 空间复杂度:选择排序 - 图2
  • 稳定性:稳定

    实现

    ```rust pub fn selection_sort(mut nums: Vec) -> Vec { for i in 0..nums.len() {
    1. let mut max_val = nums[0];
    2. let mut max_index = 0;
    3. for j in 1..nums.len() - i {
    4. if nums[j] >= max_val {
    5. max_val = nums[j];
    6. max_index = j;
    7. }
    8. }
    9. let end = nums.len() - i - 1;
    10. nums.swap(max_index, end);
    } nums }

```