📜  选择排序 c++ 算法 - C++ (1)

📅  最后修改于: 2023-12-03 15:41:57.410000             🧑  作者: Mango

选择排序 C++ 算法

选择排序是一种简单的排序算法,它的基本思想是每次从未排序的序列中选择一个最小或最大的元素,放到已排序序列的末尾。

算法步骤
  1. 设置未排序序列的第一个元素为最小值。
  2. 遍历未排序序列,找到最小值,并将其与未排序序列的第一个元素交换位置。
  3. 从第二个元素开始,重复步骤 2 直到整个序列排序完毕。
C++ 实现
void selectionSort(int arr[], int n) {
    int i, j, minIndex, tmp;
    for (i = 0; i < n - 1; i++) {
        minIndex = i;
        for (j = i + 1; j < n; j++)
            if (arr[j] < arr[minIndex])
                minIndex = j;
        if (minIndex != i) {
            tmp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = tmp;
        }
    }
}
参数说明
  • arr:要排序的数组。
  • n:数组的大小。
测试样例
int main() {
    int arr[] = { 64, 25, 12, 22, 11 };
    int n = sizeof(arr) / sizeof(arr[0]);
    selectionSort(arr, n);
    printf("Sorted array: \n");
    printArray(arr, n);
    return 0;
}
输出结果
Sorted array:
11 12 22 25 64
时间复杂度

选择排序的时间复杂度为 $O(n^2)$,因为要进行两层嵌套的循环遍历,每次最多交换一次元素。

空间复杂度

选择排序的空间复杂度为 $O(1)$,因为只需要用到少量的额外空间来交换元素。

总结

选择排序是一种简单、直观的排序算法,虽然其时间复杂度较高,但对于小规模的数据集仍然有着不错的性能表现。