C++ 实现折半插入排序:附测试主函数及边界处理要点
以下是使用 C++实现折半插入排序并设计测试主函数的代码: ```cpp #include <iostream> using namespace std; // 折半插入排序函数 void binaryInsertionSort(int arr[], int n) { int i, j, key, mid, low, high; for (i = 1; i < n; i++) { key = arr[i]; low = 0; high = i - 1; while (low <= high) { // 在有序区间内进行折半查找 mid = (low + high) / 2; if (arr[mid] < key) low = mid + 1; else high = mid - 1; } for (j = i - 1; j >= low; j--) // 将大于 key 的元素后移 arr[j + 1] = arr[j]; arr[low] = key; // 将 key 插入到合适位置 } } // 测试主函数 int main() { int arr[] = {12, 11, 13, 5, 6}; int n = sizeof(arr) / sizeof(arr[0]); cout << "排序前的数组为: "; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; binaryInsertionSort(arr, n); cout << "排序后的数组为: "; for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; return 0; } ``` 额外需要注意的逻辑点: 1. 边界情况的处理,比如数组为空或者只有一个元素的情况。 2. 注意循环的条件和变量的更新,避免出现死循环或者越界访问。 3. 对于相同元素的处理,要保证排序的稳定性。 ######[AI写代码神器 | 464点数解答 | 2024-12-17 10:00:18]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)380
- C 语言实现链表操作:创建、输出、删除及插入功能详解(字节豆包 | 534点数解答 | 2024-12-09 21:33:48)364
- C语言实现链表创建、输出、删除与插入操作的完整代码及注意要点(字节豆包 | 609点数解答 | 2024-12-18 12:18:21)380
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)215
- CentOS下Java进程出现futex_wait_queue_me问题的处理全流程(阿里通义 | 283点数解答 | 2023-11-20 14:51:26)486
- 替雷利珠单抗致免疫相关性糖尿病:病例报道与机制探讨,为临床用药敲响警钟( | 164点数解答 | 2024-10-11 14:52:52)289
- Python 代码转 C++:计算花朵鲜艳值总和(字节豆包 | 408点数解答 | 2026-04-19 21:50:57)19
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)350
- JavaScript开发必备:深入解析isNaN()函数及使用示例(阿里通义 | 217点数解答 | 2023-11-09 01:03:12)263
- JavaScript开发:手把手教你实现一个 call 函数!(阿里通义 | 361点数解答 | 2023-11-09 01:51:10)253
- JS开发:手把手教你实现一个简单的bind函数!(阿里通义 | 276点数解答 | 2023-11-09 01:51:16)287
- PHP开发必知:func_num_args()函数获取函数参数数量的用法及示例(百度文心 | 286点数解答 | 2023-11-09 17:57:51)215