求助:动态二维数组的整行插入排序代码故障排查
动态二维数组按整行插入排序的问题排查与实现示例
嘿,欢迎第一次来Stack Overflow提问!针对你说的按整行移动的二维数组插入排序只执行前几步就停的问题,我先梳理下常见的坑,再给你一个可运行的实现示例,你可以对照着自己的代码找问题~
常见问题点排查
- 边界条件处理错误:比如插入循环时提前终止,没遍历完所有需要比较的行
- 行移动逻辑漏洞:移动整行时没有正确复制/转移整行数据,导致数组结构混乱
- 动态数组的内存管理问题:如果是C/C++这类需要手动管理内存的语言,动态扩容或行移动时可能出现内存泄漏或越界,导致程序提前终止
按整行排序的插入排序实现示例
假设我们用C++的vector<vector<int>>来实现动态二维数组,排序规则是按每行的第一个元素升序排列:
void insertionSortByRow(vector<vector<int>>& arr) { int n = arr.size(); // 从第二行开始遍历,作为待插入的行 for (int i = 1; i < n; ++i) { vector<int> keyRow = arr[i]; // 保存当前待插入的行 int j = i - 1; // 向前遍历已排序的行,找到插入位置(这里按每行第一个元素比较) // 注意:要保证j >= 0,否则会越界 while (j >= 0 && arr[j][0] > keyRow[0]) { arr[j + 1] = arr[j]; // 把当前行后移一位 j--; } arr[j + 1] = keyRow; // 插入待排序的行到正确位置 } }
测试用例与验证
输入示例(假设元素以空格分隔每行)
输入:
3 1 4
1 5 9
2 6 5
4 2 3
期望输出(按每行第一个元素升序)
输出:
1 5 9
2 6 5
3 1 4
4 2 3
如果你的代码语言不是C++,可以告诉我具体语言,我再调整示例。另外,建议你把自己的代码片段和完整的测试输入贴出来,这样能更精准地定位到你代码里“执行前几步就停止”的具体原因~
内容的提问来源于stack exchange,提问作者chall18
相关产品推荐
相关产品推荐

