欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

希尔排序的算法代码

时间:2021-07-29 07:42:26|栏目:JAVA代码|点击:

希尔排序的时间复杂度为O(n*log2n) 空间复杂度为O(1)是一种不稳定的排序算法

思想:希尔排序也是一种插入排序方法,实际上是一种分组插入方法。先取定一个小于n的整数d1作为第一个增量,把表的全部记录分成d1个组,所有距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序;然后,取第二个增量d2(<d1),重复上述的分组和排序,直至所取的增量dt=1(dt<dt-1<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。   

复制代码 代码如下:

void ShellSort(int* data ,int length)
{
    if( data == NULL || length <= 0 )
        return;

    int d = length/2;  //步长
    while( d )
    {
        for(int i = 0 ; i < d ; ++i) //根据步长分成组,对每组进行插入排序
        {
            //插入排序
            for(int j = i+d; j <length ; j +=d )
            {
                if( data[j] < data[j -d])
                {
                    int temp = data[j]; //哨兵
                    int k = j-d;
                    for(; k >=0&& temp < data[k]; k -=d)
                    {
                        data[k+d] =data[k];
                    }
                    data[k+d] =temp;
                }
            }
        }
        d = d/2;
    }
}

上一篇:idea打不开双击IDEA图标没反应的快速解决方案

栏    目:JAVA代码

下一篇:mybatis plus代码生成器配置过程解析

本文标题:希尔排序的算法代码

本文地址:http://www.codeinn.net/misctech/162356.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有