直接插入排序小甲鱼代码有漏洞
刚才看了小甲鱼老师的数据结构第90集,讲插入排序,讲完我自己敲一遍,运行前代码完全跟小甲鱼一样,但是,我的一运行就报错,调试下,是第二个for循环j--越界了!! 循环里面没有对j的可行性进行检查,我自己添加了一个 &&j >=0 运行成功(对于不同数据检测时j--可以让j小于0)。 百度了下,百度上的代码有&&j>-1,哈哈,第一次发现小甲鱼老师代码漏洞! 可能是忙的时候疏忽了这个!
void InsertSort(int *k,int n)
{
int i,j,temp;
for(i = 1; i < n;i++)
{
if(k < k)
{
temp = k;
for(j = i-1;k > temp&&j >=0;j--)
{
k = k;
}
k = temp;
}
}
} 哇,我还以为自己错了呢,结果还真是小甲鱼这个小坑货代码有缺陷,幸好来这里search一下,他的代码好像没有设监视哨,倒置越界访问了。 学习了,多谢 我昨天学习到这里,也发现小甲鱼错了。因为我是自己先写好代码,然后看他的视频印证,所以一眼就看出数组越界的问题,但是后面视频中也没提到这个,然后上百度搜。。。上来这里找,果然有人几年前看过的都提出这个情况了。好。
页:
[1]