简介

插入排序是,对于元素nums[i],在它之前[0..i]已排序的序列中找到它应在的位置 j插入,并将[j..i)之间的元素后移一位。

效率

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

    实现

    1. pub fn insertion_sort(mut nums: Vec<i32>) -> Vec<i32> {
    2. for i in 1..nums.len() {
    3. let curr = nums[i];
    4. for j in (0..i).rev() {
    5. if nums[j] > curr {
    6. nums[j + 1] = nums[j];
    7. if j == 0 {
    8. nums[j] = curr;
    9. }
    10. } else {
    11. nums[j + 1] = curr;
    12. break;
    13. }
    14. }
    15. }
    16. nums
    17. }