32课:排序算法
🎯

排序算法

每次选最小放前面

📖知识引入

🎯找最小值索引
每轮在未排序部分找到最小值的索引
🔄交换到前面
将最小值与当前位置交换,放到已排序末尾
⏱️O(n²)
两层循环,时间复杂度为O(n²)
📊交换次数少
每轮最多交换一次,比冒泡排序交换次数少
🔀不稳定排序
交换可能改变相等元素的相对顺序

🔍选择排序示例

📝选择排序示例
💻
点击「运行」查看输出

选择排序过程(每轮选最小放前面): 初始: [64, 25, 12, 22, 11]

第1轮: 找最小11,与64交换 [11, 25, 12, 22, 64] 11到位! 第2轮: 找最小12,与25交换 [11, 12, 25, 22, 64] 12到位! 第3轮: 找最小22,与25交换 [11, 12, 22, 25, 64] 22到位! ...

┌────┬────┬────┬────┬────┐
  │ 64 │ 25 │ 12 │ 22 │ 11 │
  └────┴────┴────┴────┴────┘
  minIdx=4(值11) 交换到位置0

🎯小测验

1题:选择排序每次找什么?

2题:选择排序时间复杂度?

3题:选择排序比冒泡排序的优势是?

📝本课知识点

  • 每次找最小值索引
  • 交换到前面
  • O(n²)
  • 交换次数比冒泡少
  • 不稳定排序
32课完成!继续探索下一课吧 🚀