一个!号引发的灾难!!!!!!!

本文记录了一次堆排序程序调试的经历,作者因忽视了一个小小的感叹号(!)而导致程序无法正确建立堆,进而影响了整个排序过程。通过对问题的逐步排查与解决,强调了编程中注意细节的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

              今天很郁闷!!!!但现在又很开心。。我承认我是一个不太注意细节的人,今天真的给了我一次很深的 教训!!!!从昨天晚上开始,我开始进入了堆排序了,其实写代码有时真的很容易,通过编译器检查也真的很容易!!但能否得到自己想要的结果却很难!!!往往得到的一般不是自己预计的目标或结果,真的我以前,现在都深有体会!!!!

            昨天其实我没花多少时间就写好了堆排序!但我为了得到一个预期的结果,却为此付出了远远大于编写程序的时间,其实正如我们老师说的,你只需20%的时间写程序,但你得花80%的时间改程序!当你改程序的时间小于你写程序的时间的时候,你才真的成了编程高手!!往往就是一个小的 地方会让你花费N多的时间,这里我也想起了一个魔兽玩家说的话“高手往往是注意细节的人”,你可能没有很牛逼的微操,但只要你把握住另外每一个细节,你必将取胜!

           言归正传,说说今天的问题,其实没什么问题,就是少了一个!号,很可笑吧,平常这么不起眼的小东西,竟然让我浪费了这么多的时间!!!!!!!!这里又想起了以前读过的关于制造卫星的书,书上说一根很小的头发丝都能导致卫星不能正常工作,今天我真的深有体会了!

          这里说下我的问题:我的问题是排序不成功,结果和预计的相差很大!!

           排除方法AND问题分析:

            首先我在建堆的函数后面加了个输出,这里只是很简单的将数组里的数全部输出,根据输出我就能知道是否是建堆出了问题。经过检查果然建堆有问题,不能建堆。

            然后我去查看建堆函数,检查后发现没有问题,但为什么建堆不成功了?我在检查我的shiftdown函数,开始只是检查了下while(){}大括号里的函数,认真检查了下,发现有问题,判断语句不对,在一种情况下会导致出错,然后我马上改了过来,原本以为这下搞定了,编译成功,运行后发现结果还是与预期相差很大,检查建堆还是没建,刚才不是改了么怎么会这样,难道removeMax()有错,在去检查removeMax(),发现屏蔽掉shiftdown函数后,结果还是一样的,有和没有都一样,这里可以肯定shiftdown函数一定有问题,在根据建堆的结果和排序后输出所得到的结果判断,shiftdown函数没有起到其本来的作用,仔细从头到尾检查下此函数,发现while语句判断出错!本来我想用没到达叶节点就不停的down下去,然而没到达叶节点返回的是false,我这少了个!号,也就是说此函数永远都不会down下去,while语句里面的代码=没有写!!!!!!!

总结:我得细心细心在细心,如果我以后想走上程序员的道路的话,我一定得改下我不注重细节的这个老得很又很不好的坏毛病!!!!!!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值