c语言选择排序


选择排序(Selection Sort)是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 以下是选择排序的 C 语言代码实现示例: ```c #include <stdio.h> // 交换两个元素的值 void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } // 选择排序函数 void selectionSort(int arr[], int n) { int i, j, min_idx; for (i = 0; i < n - 1; i++) { min_idx = i; for (j = i + 1; j < n; j++) if (arr[j] < arr[min_idx]) min_idx = j; if (min_idx!= i) swap(&arr[i], &arr[min_idx]); } } // 打印数组函数 void printArray(int arr[], int size) { int i; for (i = 0; i < size; i++) printf("%d ", arr[i]); printf("\n"); } // 测试示例 int main() { int arr[] = {64, 25, 12, 22, 11}; int n = sizeof(arr) / sizeof(arr[0]); printf("排序前的数组为: "); printArray(arr, n); selectionSort(arr, n); printf("排序后的数组为: "); printArray(arr, n); return 0; } ``` 选择排序的时间复杂度为 $O(n^2)$,空间复杂度为 $O(1)$。它在小型数据集上表现良好,但对于大型数据集,性能相对较差。 [2024-10-25 10:11:13 | AI写代码神器 | 454点数解答]
- 设计内容及要求:学生信息要求:不少于2个班级,每个班级不少于10位学生,格式如下:学号(10位,如2023030201) 、姓名、性别、班级、数据结构、linux编程基础、python程序设计。学生数据存储到文件中(也可以使用数据库),示例如下: 序号 学号 姓名 性别 班级 数据结构 linux编程基础 python程序设计 备注 1 2023300201 张三 男 计科1班 90 88 85 2 2023300202 李丽 女 计科2班 85 76 80 实习功能如下: (1)按班级顺序输出学生信息列表; (2)创建:插入一条学生信息,并输出验证是否插入成功; (3)删除:按学号删除一条学生记录,并输出验证是否删除成功; (4)修改:修改某位学生的课程成绩,并验证是否修改成功; (5)查找:按照学生姓名查找学生某门课程成绩并输出显示; (6)排序:要体现不少于两种排序算法 (a)统计每个学生的总分,按总分降序输出; (b)统计每个学生的平均分,按平均分增序输出; (c)统计每个班中总分前三名和后三名,并输出; (7)退出程序,用c语言写(2547点数解答 | 2024-12-15 22:08:58)226
- 设计内容及要求:学生信息要求:不少于2个班级,每个班级不少于10位学生,格式如下:学号(10位,如2023030201) 、姓名、性别、班级、数据结构、linux编程基础、python程序设计。学生数据存储到文件中(也可以使用数据库),示例如下: 序号 学号 姓名 性别 班级 数据结构 linux编程基础 python程序设计 备注 1 2023300201 张三 男 计科1班 90 88 85 2 2023300202 李丽 女 计科2班 85 76 80 实习功能如下: (1)按班级顺序输出学生信息列表; (2)创建:插入一条学生信息,并输出验证是否插入成功; (3)删除:按学号删除一条学生记录,并输出验证是否删除成功; (4)修改:修改某位学生的课程成绩,并验证是否修改成功; (5)查找:按照学生姓名查找学生某门课程成绩并输出显示; (6)排序:要体现不少于两种排序算法 (a)统计每个学生的总分,按总分降序输出; (b)统计每个学生的平均分,按平均分增序输出; (c)统计每个班中总分前三名和后三名,并输出; (7)退出程序,用c语言写,给出完整的代码(6408点数解答 | 2024-12-15 22:10:03)220
- CREATE TABLE `sys_module` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `level` int(8) DEFAULT '1' COMMENT '菜单等级:1 一级菜单,2 二级菜单,3 三级菜单', `parent_id` bigint(20) DEFAULT '0' COMMENT '上级ID(0表示没有上级)', `module_name` varchar(30) CHARACTER SET utf8 DEFAULT '' COMMENT '菜单名称', `module_path` varchar(50) DEFAULT '' COMMENT '菜单路径', `module_icon` varchar(50) CHARACTER SET utf8 DEFAULT '' COMMENT '菜单图标', `sort` int(8) DEFAULT '1' COMMENT '排序', `status` tinyint(2) DEFAULT '1' COMMENT '(252点数解答 | 2025-04-09 10:54:17)102
- CREATE TABLE `sys_role` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `parent_id` bigint(20) DEFAULT '0' COMMENT '上级ID(0表示没有上级)', `role_name` varchar(30) DEFAULT '' COMMENT '角色名称', `sort` int(11) DEFAULT '1' COMMENT '排序', `status` tinyint(1) DEFAULT NULL COMMENT '状态:0无效 1有效', `remarks` varchar(100) DEFAULT NULL COMMENT '备注描述', `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', `create_by` bigint(20) DEFAULT NULL COMMENT '创建人', `update_time` timestamp NULL DEFAU(168点数解答 | 2025-04-10 14:39:47)105
- P3632国王游戏(弱化版)c++ 入门 排序 贪心 标准IO 传统题 时间限制 1000ms 内存限制 256MB 通过/尝试次数 382/1181 来源 TomAnderson 题目描述 恰逢 H 国国庆,国王邀请 n n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。 输入格式 第一行包含一个整数 n n,表示大臣的人数。 第二行包含两个整数 a a 和 b b,之间用一个空格隔开,分别表示国王左手和右手上的整数。 接下来 n n 行,每行包含两个整数 a a 和 b b,之间用一个空格隔开,分别表示每个大臣左手和右手(550点数解答 | 2025-04-28 18:16:50)257
- P3632国王游戏(弱化版) 入门 排序 贪心 标准IO 传统题 时间限制 1000ms 内存限制 256MB 通过/尝试次数 606/1828 来源 TomAnderson 题目描述 恰逢 H 国国庆,国王邀请 � n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 � n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。 输入格式 第一行包含一个整数 � n,表示大臣的人数。 第二行包含两个整数 � a 和 � b,之间用一个空格隔开,分别表示国王左手和右手上的整数。 接下来 � n 行,每行包含两个整数 � a 和 � b,之间用一个空格隔开,分别表示每个大臣左手和右手上的整(1002点数解答 | 2025-05-10 20:58:15)115
- C++ P3632国王游戏(弱化版) 入门 排序 贪心 标准IO 传统题 时间限制 1000ms 内存限制 256MB 通过/尝试次数 606/1828 来源 TomAnderson 题目描述 恰逢 H 国国庆,国王邀请 � n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 � n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。 输入格式 第一行包含一个整数 � n,表示大臣的人数。 第二行包含两个整数 � a 和 � b,之间用一个空格隔开,分别表示国王左手和右手上的整数。 接下来 � n 行,每行包含两个整数 � a 和 � b,之间用一个空格隔开,分别表示每个大臣左手和(507点数解答 | 2025-05-10 20:59:01)99