C 语言实现链式基数排序:对超 100000 随机序列排序并精准统计运行时间
以下是一个使用 C 语言实现链式基数排序的程序示例,并且对随机生成的 100000 个元素的序列进行排序并统计运行时间: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> // 链表节点结构体 typedef struct Node { int data; struct Node* next; } Node; // 创建新节点 Node* createNode(int data) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL; return newNode; } // 获取数字的指定位数的值 int getDigit(int num, int digit) { int div = 1; for (int i = 0; i < digit; i++) { div *= 10; } return (num / div) % 10; } // 基数排序函数 void radixSort(Node head, int numDigits) { Node* buckets[10]; Node* temp; for (int digit = 0; digit < numDigits; digit++) { // 初始化桶 for (int i = 0; i < 10; i++) { buckets[i] = NULL; } temp = *head; // 将元素分配到桶中 while (temp!= NULL) { int bucketIndex = getDigit(temp->data, digit); Node* newNode = createNode(temp->data); if (buckets[bucketIndex] == NULL) { buckets[bucketIndex] = newNode; } else { Node* curr = buckets[bucketIndex]; while (curr->next!= NULL) { curr = curr->next; } curr->next = newNode; } temp = temp->next; } // 重建链表 *head = NULL; for (int i = 0; i < 10; i++) { temp = buckets[i]; while (temp!= NULL) { Node* next = temp->next; temp->next = *head; *head = temp; temp = next; } } } } // 打印链表 void printList(Node* head) { Node* temp = head; while (temp!= NULL) { printf("%d ", temp->data); temp = temp->next; } printf("\n"); } // 释放链表内存 void freeList(Node* head) { Node* temp; while (head!= NULL) { temp = head; head = head->next; free(temp); } } int main() { Node* head = NULL; Node* tail = NULL; // 随机数生成并创建链表 srand(time(NULL)); for (int i = 0; i < 100000; i++) { int num = rand(); Node* newNode = createNode(num); if (head == NULL) { head = newNode; tail = newNode; } else { tail->next = newNode; tail = newNode; } } clock_t start = clock(); radixSort(&head, 6); // 假设最大数字为 6 位数 clock_t end = clock(); printf("Sorted list: "); printList(head); double timeTaken = ((double)(end - start)) / CLOCKS_PER_SEC; printf("Time taken: %f seconds\n", timeTaken); freeList(head); return 0; } ``` 这个程序首先随机生成 100000 个数字构建链表,然后进行基数排序,并统计排序所花费的时间。实际运行时间会受到计算机性能的影响。 ######[AI写代码神器 | 925点数解答 | 2024-10-13 22:10:29]
- 求解特定条件下整数序列的最小值:算法分析与代码实现(字节豆包 | 746点数解答 | 2026-01-24 13:14:40)70
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)376
- 奖学金代表选取难题:计算满足条件的上台同学方案数(字节豆包 | 406点数解答 | 2025-12-13 10:54:48)59
- Python实现多个整数相乘的计算及开发建议(字节豆包 | 427点数解答 | 2026-02-25 19:25:10)45
- 编程求解 1 到 N 的阶乘和:Python 与 C++ 实现(字节豆包 | 650点数解答 | 2026-03-01 20:05:48)26
- C++实现自定义函数计算 f(a)+f(b)+f(c)(字节豆包 | 610点数解答 | 2026-04-11 20:22:28)21
- C++实现找出指定范围内完全数的方法及开发建议(字节豆包 | 692点数解答 | 2026-04-11 20:23:34)20
- C++ 计算 1 到 n 中数字 1 的出现次数的实现与解析(字节豆包 | 849点数解答 | 2026-04-11 20:24:18)25
- 数字化制图综合平台:助力企业转型,推动烟草物流图纸智能化设计 (字节豆包 | 490点数解答 | 2024-10-30 20:30:29)158
- 数字化制图综合平台:引领烟草物流及多领域设计革新 在企业数字化转型的时代浪潮中,数字化制图技术创新应用成为产业升级与提升竞争力的关键。企业对高效、精准、智能化设计解决方案需求迫切,构建集二维到三维正逆向工程快捷化、干涉检测可视化、设备明细数据提取自动化以及设备模块模型库于一体的综合平台意义重大。 此平台集成先进数字化制图工具与智能算法,可实现二维设计到三维建模的无缝转换,大大缩短设计周期。正逆向工程能快速切换,满足不同场景设计需求。内置干涉检测功能可实时监测设计潜在冲突,保障设计方案可行与安全。设备明细数据自动提取提高设计准确性与效率。设备模块模型库为设计师提供丰富资源,支持设计标准化与模块化,加速项目推进。 整体来看,该综合平台的应用极大促进了烟草物流行业及更广泛领域的技术创新与效率提升。在烟草物流方案图纸智能化设计中,它提升了图纸设计效率与质量,使设计工作更加高效、精准。对于企业而言,这一平台带来显著竞争优势,能帮助企业在数字化转型中脱颖而出,在激烈的市场竞争中占据有利地位,推动整个行业向更高效、更智能的方向发展。 (阿里通义 | 216点数解答 | 2024-10-30 20:30:51)189
- C++ 实现:从大整数中删数求最小密码的巧妙算法(DeepSeek | 473点数解答 | 2025-06-20 16:08:21)211
- 用 JavaScript 实现福利彩票抽奖:一键体验浏览器上的中奖乐趣!(GPT | 282点数解答 | 2024-09-25 20:36:52)286