C语言实现通讯录按年龄从大到小排序:代码详解与复杂度分析
以下是解决该问题的C语言代码: ```c #include <stdio.h> #include <string.h> // 定义朋友信息的结构体 typedef struct { char name[11]; int birthday; char phone[18]; } Friend; // 交换两个朋友信息的函数 void swap(Friend *a, Friend *b) { Friend temp = *a; *a = *b; *b = temp; } // 冒泡排序函数,按照生日从小到大排序(年龄从大到小) void bubbleSort(Friend friends[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (friends[j].birthday > friends[j + 1].birthday) { swap(&friends[j], &friends[j + 1]); } } } } int main() { int n; // 读取朋友的数量 scanf("%d", &n); Friend friends[10]; // 读取每个朋友的信息 for (int i = 0; i < n; i++) { scanf("%s %d %s", friends[i].name, &friends[i].birthday, friends[i].phone); } // 对朋友信息按照生日排序 bubbleSort(friends, n); // 输出排序后的朋友信息 for (int i = 0; i < n; i++) { printf("%s %d %s\n", friends[i].name, friends[i].birthday, friends[i].phone); } return 0; } ``` 代码说明: 1. 结构体定义:定义了一个名为`Friend`的结构体,用于存储朋友的姓名、生日和电话号码。 2. 交换函数:`swap`函数用于交换两个`Friend`结构体变量的值。 3. 冒泡排序函数:`bubbleSort`函数使用冒泡排序算法对朋友信息按照生日从小到大进行排序,即年龄从大到小排序。 4. 主函数: - 读取朋友的数量`n`。 - 读取每个朋友的信息并存储在`friends`数组中。 - 调用`bubbleSort`函数对朋友信息进行排序。 - 输出排序后的朋友信息。 复杂度分析: - 时间复杂度:$O(n^2)$,主要是由于使用了冒泡排序算法。 - 空间复杂度:$O(n)$,主要用于存储朋友的信息。 ######[AI问答 | 604点数解答 | 2025-12-11 11:24:48]
- Java 编程:实现教师与学生类的创建、继承及属性操作(字节豆包 | 745点数解答 | 2024-10-16 18:40:42)390
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)226
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)59
- Java 实现学生类:属性封装、静态方法调用与对象信息输出(字节豆包 | 236点数解答 | 2024-09-18 16:15:05)230
- C 语言实现超实用学生管理系统:含插入、删除、修改、查询及文件存储功能 (字节豆包 | 2323点数解答 | 2024-11-01 02:41:20)267
- Python 实现 BMI 类:计算身体质量指数并判定胖瘦(字节豆包 | 377点数解答 | 2024-11-17 19:54:06)148
- Python实现BMI类:精准计算健康指标,判定胖瘦状态(阿里通义 | 616点数解答 | 2024-11-17 19:57:02)112
- Java实现Student类:含构造、方法及年龄判定(字节豆包 | 464点数解答 | 2024-11-19 15:55:26)382
- Java实现:毕业生姓名、年龄、毕业年份与成绩信息输出(阿里通义 | 542点数解答 | 2025-04-17 14:59:23)220
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)457