教育改变生活
标题: 【C语言】选择排序 [打印本页]
作者: wander 时间: 2025-3-25 19:47
标题: 【C语言】选择排序
本帖最后由 wander 于 2025-3-25 19:52 编辑
选择排序是一种简单的排序算法,其主要思想是通过不断选择未排序部分的最小值,将其放到已排序部分的末尾。这个过程不断循环,直到整个数组都排好序为止。
下面详细介绍一下 C语言选择排序的实现过程:
- 首先遍历整个数组,找到未排序部分中的最小值;
- 将该最小值和未排序部分的第一个元素交换位置,即将最小值放到已排序部分的末尾;
- 然后继续遍历未排序部分,重复上述步骤,直到所有元素都被排序。
下面是一个 C语言实现选择排序的代码:
- void selectionSort(int arr[], int n) {
- int i, j, min_idx,temp;
- 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;
- }
- }
- // 将最小值与已排序部分的末尾交换位置
- 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
可以看到,选择排序算法成功地将原始数组从小到大排序了。
欢迎光临 教育改变生活 (http://bbs.goldoar.com/) |
Powered by Discuz! X3.2 |