酷代码 AI
菜单
服务商

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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]