国产探花免费观看_亚洲丰满少妇自慰呻吟_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;
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扎赉特旗| 华池县| 巴林左旗| 永年县| 军事| 康定县| 安阳市| 莒南县| 皋兰县| 和林格尔县| 定西市| 财经| 澜沧| 股票| 北碚区| 改则县| 湟源县| 名山县| 社旗县| 吕梁市| 开远市| 临泉县| 漾濞| 宜丰县| 兴隆县| 咸丰县| 和田县| 漳平市| 广安市| 同江市| 合肥市| 黄冈市| 彝良县| 呼图壁县| 磴口县| 通化县| 彰化市| 麻栗坡县| 九江市| 普洱| 吉林省|