C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C中的插入排序算法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我对插入排序的以下代码有疑问:

void insertion(Item a[],int ell,int r)                
{               
    int i;          
        for (i=ell+1; i<=r; i++)            
           compexch(a[ell],a[i]);          
    {           
        for (i=ell+2; i<=r; i++)        
        {       
            int j=i;    
            Item v=a[i];    
            while(less (v,a[j-1])) 
            {   
                a[j]=a[j-1];
                j--;
            }   
            a[j]=v;
        }       

    }           
}

好的,所以我的问题是关于while循环部分 – 我看到j递减了,想知道当j = 0和a [-1]时会发生什么.我不明白我们如何允许负面索引 – 如果我们比较的信息发生了变化并且while循环继续运行会怎么样?谢谢.

解决方法

我假设compexch(x,y)做了if(less(y,x)){Item t = x; X = Y; y = t}.因此,在第一个for循环完成之后,[ell]包含[ell 1],…,a [r]中的最少Item.现在j用值i初始化,其至少为2,因此我们有j> 1.进入while循环时.如果while循环没有尽快终止,我们最终会得到j == ell.由于[ell]已经被设置为范围中的最小元素,因此less(v,a [ell])必然返回false,然后循环将终止.

所以j永远不会减少到小于ell的值.

大佬总结

以上是大佬教程为你收集整理的C中的插入排序算法全部内容,希望文章能够帮你解决C中的插入排序算法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: