网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 310|回复: 0
打印 上一主题 下一主题

【C语言】选择排序

[复制链接]

711

主题

718

帖子

3204

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3204
跳转到指定楼层
楼主
发表于 2025-3-25 19:47:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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
可以看到,选择排序算法成功地将原始数组从小到大排序了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2025-4-5 04:28 , Processed in 0.033061 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表