首页 > 编程笔记

C语言选择排序

选择排序是一种简单的排序算法,其主要思想是通过不断选择未排序部分的最小值,将其放到已排序部分的末尾。这个过程不断循环,直到整个数组都排好序为止。

下面详细介绍一下 C语言选择排序的实现过程:

下面是一个 C语言实现选择排序的代码:
void selectionSort(int arr[], int n) {
    int i, j, min_idx;
    for (i = 0; i < n - 1; i++) { // i表示已排序部分的长度
        min_idx = i; // 假设未排序部分的第一个元素为最小值
        // 在未排序部分中查找最小值
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        // 将最小值与已排序部分的末尾交换位置
        int temp = arr[min_idx];
        arr[min_idx] = arr[i];
        arr[i] = temp;
    }
}
上述代码中,变量 arr 表示待排序的数组,n 表示数组的长度。

以下是一个简单的测试程序,它生成一个随机数组,并对其进行选择排序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void selectionSort(int arr[], int n);

int main() {
    srand(time(NULL)); // 设置随机数种子
    int arr[10];
    int i;
    printf("Original array: ");
    for (i = 0; i < 10; i++) {
        arr[i] = rand() % 100; // 生成0-99之间的随机整数
        printf("%d ", arr[i]);
    }
    printf("\n");
    selectionSort(arr, 10); // 对数组进行选择排序
    printf("Sorted array: ");
    for (i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}
运行结果如下所示:

Original array: 74 94 44 63 89 69 33 60 17 12
Sorted array: 12 17 33 44 60 63 69 74 89 94

可以看到,选择排序算法成功地将原始数组从小到大排序了。

推荐阅读