C程序 选择排序

  • Post category:C

首先,让我们来讲解一下“C程序 选择排序”的完整使用攻略。

什么是选择排序

选择排序是一种简单的排序算法。它的基本思想是在未排序的元素序列中找到最小(大)元素,放到序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素,放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

C程序 选择排序

下面是一个示例代码:

#include <stdio.h>

void SelectionSort(int arr[], int n) {
    int i, j, min_index;

    for (i = 0; i < n - 1; i++) {
        min_index = i;
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[min_index]) {
                min_index = j;
            }
        }
        int temp = arr[min_index];
        arr[min_index] = arr[i];
        arr[i] = temp;
    }
}

int main(void) {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    SelectionSort(arr, n);
    int i;
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

思路:
选择排序的基本思路是:首先假定最小值为数组的第 1 个元素,然后在剩下的元素中找到最小值,并与第 2 个元素交换位置;接下来在剩下的元素中选取最小值并与第 3 个元素交换位置;以此类推,直到最终所有元素都有序。
– 对于给定的未排序数组,通过循环遍历查找未排序部分中的最小元素。
– 将找到的最小元素与未排序部分的首位交换,将找到的最小元素放置到已排序部分的末尾。
– 重复上述过程,知道所有元素都有序。

只要掌握了以上思路,并以此写出了 C 语言代码,就能成功实现选择排序了。

示例

下面是两个实例,分别验证选择排序算法运行的正确性:

  • 第一个实例:输入未排好序的数组 {64, 25, 12, 22, 11},程序输出已排好序的数组 {11, 12, 22, 25, 64}。

代码如下:

int main() {
    int arr[] = {64, 25, 12, 22, 11};
    int n = sizeof(arr) / sizeof(arr[0]);
    SelectionSort(arr, n);
    printf("排序后的数组:\n");
    PrintIntArray(arr, n);
    return 0;
}

输出结果:

排序后的数组:
11 12 22 25 64 
  • 第二个实例:输入未排好序的数组 {1, 3, 5, 7, 3},程序输出已排好序的数组 {1, 3, 3, 5, 7}。

代码如下:

int main() {
    int arr[] = {1, 3, 5, 7, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    SelectionSort(arr, n);
    printf("排序后的数组:\n");
    PrintIntArray(arr, n);
    return 0;
}

输出结果:

排序后的数组:
1 3 3 5 7 

到此为止,C程序 选择排序的完整使用攻略讲解完毕。