美文网首页
希尔排序

希尔排序

作者: 热血大桃子 | 来源:发表于2018-08-02 11:50 被阅读0次

     希尔排序是个什么东西,我把几年前做的ppt贴上来吧,我觉得也很好理解,然后附上几个代码,大家可以看看。


    幻灯片1.PNG 幻灯片2.PNG 幻灯片3.PNG 幻灯片4.PNG 幻灯片5.PNG 幻灯片6.PNG 幻灯片7.PNG

    来看代码:

    • c版
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define P 8
    void shellSort(int shell[]);
    void random();
    
    int main() 
    {
        random();//产生随机数 
        system("pause");
        return 0;
    }
    
    void random()
    {
        int shell[8];
        srand( (unsigned)time( NULL ) );  
        for(int i = 0; i < P;i++ )
            shell[i] =  rand()%100+1 ;
            
        printf("初始数据(0--100随机数):\n");
        for(int i=0;i<8;i++)
            printf("shell[%d] = %d\n",i,shell[i]);
            
        shellSort(shell);//希尔排序 
        return ;
        
    }
    void shellSort(int shell[])
    {
        for(int  gap = 4;gap >0; gap/=2) 
            for(int i = 0;i <gap;i++)  {
                for(int j=i+gap;j<8;j+=gap)
                    if(shell[j] < shell[j-gap])  {
                        int temp = shell[j];
                        int k = j-gap;
                        while(k>=0 &&shell[k] >temp)  {
                            shell[k+gap]=shell[k];
                            k-=gap;
                        }
                    shell[k+gap] =temp; 
                    }   
                 }
                 printf("\n\n希尔排序后:\n");
                 for(int m=0;m<8;m++)
                    printf("shell[%d]= %d\n",m,shell[m]);
                    return;
    }
    
    • js版
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
    <script type="text/javascript">
        function shellSort(nums){//希尔排序
            var gaps=[5,3,1];//定义间隔区间
            for(var g=0;g<gaps.length;g++){//一个一个间隔值开始
                for(var i=gaps[g];i<nums.length;i++){//以间隔值遍历
                    var temp=nums[i];//选中元素
                    for(var j=i;j>=gaps[g]&&nums[j-gaps[g]]>temp;j-=gaps[g]){//如果前面一个大于后面一个
                        nums[j]=nums[j-gaps[g]];//后移
                    }
                    nums[j]=temp;//填补
                }
            }
        }
        function show(nums){//显示数组
            for(var i=0;i<nums.length;i++){
                document.write(nums[i]+' ');
            }
            document.write('<br>');
        }
        var nums=[18,8,15,9,5,3,8,16];
        show(nums);//18,8,15,9,5,3,8,16
        shellSort(nums);//希尔排序
        show(nums);
    </script>
        </body>
    </html>
    



    转载注明出处,谢谢!by 热血大桃子

    相关文章

      网友评论

          本文标题:希尔排序

          本文链接:https://www.haomeiwen.com/subject/ejujvftx.html