You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++实现Counting Sort输出错误排查求助

问题排查与解决

你的计数排序核心逻辑本身是正确的,错误根源不在你怀疑的countsort函数内部代码,而是main函数中数组a和b的内存分配方式错误:

a = b = new int[n];

这行代码让指针a和b指向了同一块动态分配的内存区域。当countsort函数往b数组写入排序结果时,实际上是在覆盖a数组的原始数据——而排序过程中还需要读取a的原始值,这就导致后续的排序逻辑基于被篡改的数据,最终输出错误结果。

修正方案

为a和b分别分配独立的内存空间,替换掉错误的内存分配代码:

// 替换原来的a = b = new int[n];
a = new int[n];
b = new int[n];

修正后,a保存原始输入数据,b作为排序结果的存储数组,两者互不干扰,排序逻辑就能正常执行。

验证结果

用你提供的输入数据:

3
4
3
2
0
2
0
0
0
2

修正后的代码会输出正确的排序结果:0 0 0 0 2 2 2 3 3 4,同时也避免了重复释放同一块内存的未定义行为。

内容的提问来源于stack exchange,提问作者user23478603

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 05:55:07