选择排序(Selection Sort)

1. 算法简介

选择排序是一种简单直观的比较排序算法。它的基本思想是:每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

  • 分类:内部排序、比较排序、非稳定排序
  • 适用场景:数据量较小或对稳定性无要求的简单任务

2. 算法原理与步骤

升序排序为例:

  1. 初始状态:整个数组为无序区。
  2. 第 i 轮(i 从 0 开始):
    • 在无序区 [i, n-1] 中找到最小元素的下标 minIndex
    • arr[i]arr[minIndex] 交换。此时 arr[i] 成为有序区的最后一个元素,无序区长度减1。
  3. 重复步骤2,直到 i 到达 n-1(只剩一个元素时自然有序)。

3. 代码实现

 int arr[5] = {6, 3, 8, 2, 5}; // 假设5个数据
 for (int i = 0; i < 5 - 1; i++) {
     int minIdx = i;
     for (int j = i + 1; j < 5; j++) {
         if (arr[j] < arr[minIdx])
             minIdx = j;
     }
     swap(arr[i], arr[minIdx]);
 }
 for (int i = 0; i < 5 - 1; i++) {
     cout << arr[i] << " ";
 }