笔者在学习快速算法时,读了这篇博客
https://blog.csdn.net/MoreWindows/article/details/6684558
在自己实验时,发现如果将其最外层循环从while(i<j)改为while(i!=j),则程序会陷入一个死循环。
断点调试发现,卡在了i=8,j=7。即两个浮标交叉了。思考了下,发现是递归语句出了问题。
当i浮标和当前的l或者r重合的时候,递归语句会出现问题。
如当递归到,l=8,r=9。而i=8时。
递归语句会为sqr(8,7),就出问题了。
解决方案是,如原博客写成while(i<j)
或者用两个if语句,是的当i与l或r重合时,就只执行对左边或右边子数组的递归语句。