C++ 堆排序代码详解:从随机数生成到数组排序全流程
以下是为您补充完整的堆排序代码,并添加了注释,希望对您有帮助: ```cpp #include<iostream> using namespace std; #include<stdlib.h> #include<time.h> const int n = 10; const int min = 10; const int max = 99; // 生成指定范围内的随机数 int getrand(int min, int max) { return (rand() % (max - min + 1) + min); } // 为数组赋值 void set(int r[], int n) { int i; for (i = 0; i < n; i++) r[i] = getrand(min, max); } // 打印数组元素 void show(int r[], int n) { int i; for (i = 0; i < n; i++) cout << r[i] << " "; cout << endl; } // 堆排序函数 void heapsort(int r[], int n) { // 从最后一个非叶子节点开始调整堆 for (int i = n / 2 - 1; i >= 0; i--) { adjustHeap(r, i, n); } // 交换堆顶元素和末尾元素,并重新调整堆 for (int i = n - 1; i > 0; i--) { swap(r[0], r[i]); adjustHeap(r, 0, i); } } // 调整堆的函数 void adjustHeap(int r[], int i, int len) { int temp = r[i]; for (int k = 2 * i + 1; k < len; k = 2 * k + 1) { if (k + 1 < len && r[k] < r[k + 1]) { k++; } if (r[k] > temp) { r[i] = r[k]; i = k; } else { break; } } r[i] = temp; } // 交换两个元素的值 void swap(int& a, int& b) { int temp = a; a = b; b = temp; } int main() { srand(time(0)); int a[n]; set(a, n); cout << "原序列: "; show(a, n); cout << "新序列:\n"; heapsort(a, n); show(a, n); return 0; } ``` 额外需要注意的逻辑点: 1. 堆排序的时间复杂度和空间复杂度要清楚,以便在实际应用中选择合适的算法。 2. 调整堆的过程中,边界条件的处理要准确,避免越界访问。 3. 代码中的随机数生成可能会存在一定的重复性,在对随机性要求高的场景需要特殊处理。 ######[AI写代码神器 | 684点数解答 | 2024-11-28 11:21:15]
- 代码填空挑战:完成正态分布、随机数生成及数据处理代码(阿里通义 | 506点数解答 | 2025-03-23 14:32:14)317
- 挑战!完成代码填空解锁数据处理奥秘(字节豆包 | 116点数解答 | 2025-03-26 22:22:15)335
- 挑战填空!完成这段 NumPy 代码实现数据生成与保存(DeepSeek | 178点数解答 | 2025-03-26 22:26:30)396
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)226
- 6种排序算法完整实现:自行编码、复杂度分析与运行时间对比(字节豆包 | 859点数解答 | 2025-01-10 13:19:29)128
- Python 实现:四位数重组求最大最小数差值(字节豆包 | 144点数解答 | 2026-02-01 12:49:54)23
- Python 代码求解:小明当选 Y 国总统至少需多少选民支持?(字节豆包 | 207点数解答 | 2026-02-01 12:51:14)32
- 拍卖干草:如何定价才能收益最大化?(DeepSeek | 1171点数解答 | 2026-02-23 21:10:09)19
- 工程师必知!Monkey 流程助力软件稳定性与可靠性提升(百度文心 | 388点数解答 | 2023-11-09 18:28:07)282
- 工程师揭秘:重要 APP 从需求到上线全流程攻略(百度文心 | 334点数解答 | 2023-11-09 18:31:47)282
- C++实现计算最少添加数字次数以匹配两个数组元素(字节豆包 | 714点数解答 | 2026-03-08 19:44:54)13
- 5条新春贺语,开启龙年吉祥团圆新篇章!(字节豆包 | 135点数解答 | 2025-01-15 14:43:34)314