国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

希爾排序的算法代碼

2019-11-26 16:14:28
字體:
來源:轉載
供稿:網友

希爾排序的時間復雜度為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;
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北京市| 青龙| 永平县| 安泽县| 鹰潭市| 托克托县| 临沂市| 高尔夫| 五大连池市| 伊宁市| 常宁市| 名山县| 外汇| 新民市| 大石桥市| 汽车| 德昌县| 济阳县| 神农架林区| 临澧县| 九江县| 新平| 巨野县| 历史| 繁峙县| 阿克陶县| 噶尔县| 上饶县| 佛坪县| 尤溪县| 雷波县| 翼城县| 若羌县| 呼玛县| 大田县| 富顺县| 和顺县| 江陵县| 民和| 尼勒克县| 迁西县|