C 实现选择排序

狂野之狼 2024-07-16 ⋅ 17 阅读

选择排序是一种简单直观的排序算法,它的基本思想是每次从待排序的数列中选择最小(或最大)的元素,将其放到数列的起始位置,然后再从剩下的未排序元素中继续选择最小(或最大)的元素,放到已排序部分的末尾。重复这个过程,直到整个数列排序完成。

选择排序的原理

选择排序的过程可以用以下几个步骤来描述:

  1. 在未排序的数列中找到最小(或最大)的元素,将其与数列的第一个元素交换位置。
  2. 在剩下的未排序元素中继续选择最小(或最大)的元素,将其与数列的第二个元素交换位置。
  3. 重复上述步骤,直到整个数列排序完成。

选择排序不断地在剩余的元素中选择最小(或最大)的元素,并放置到已排序部分的末尾,直到所有元素都放置到正确的位置上。

C++实现选择排序

下面是一个用C++语言实现选择排序的示例代码:

#include <iostream>

using namespace std;

void selectionSort(int arr[], int n) {
    for (int i = 0; i < n-1; i++) {
        int minIndex = i;
        for (int j = i+1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        swap(arr[i], arr[minIndex]);
    }
}

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr)/sizeof(arr[0]);
    selectionSort(arr, n);
    cout << "排序后的数组:\n";
    for (int i=0; i < n; i++) {
        cout << arr[i] << " ";
    }
    cout << endl;
    return 0;
}

示例解析

在上述代码中,我们定义了一个名为selectionSort的函数,该函数使用选择排序算法对给定的整型数组进行排序。函数接受两个参数:数组arr和数组的大小n

选择排序函数首先从数组的第一个元素开始迭代,将当前位置的元素设置为最小值的索引minIndex。然后,它在剩余的未排序元素中查找更小的元素,如果找到,则将最小元素的索引更新为minIndex,直到找到整个数组的最小元素。

然后,函数将找到的最小元素与当前位置的元素进行交换。

通过反复执行上述操作,直到数组的所有元素都按升序排列为止。

在主函数main中,我们声明了一个整型数组arr并初始化了它。然后,我们计算数组的大小,并将数组和大小作为参数传递给selectionSort函数。最后,我们打印出排序后的数组。

总结

选择排序是一种简单但低效的排序算法,它的时间复杂度为O(n^2),其中n是待排序数列的长度。尽管选择排序的效率较低,但它易于理解和实现。

希望本文对你理解和实现选择排序算法有所帮助。如果你有任何问题或建议,请随时留言。


全部评论: 0

    我有话说: