真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

何為希爾排序

這篇文章主要講解了“何為希爾排序”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“何為希爾排序”吧!

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)薌城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

概述

希爾排序,也稱遞減增量排序算法,是插入排序的一種更高效的改進(jìn)版本。但希爾排序是非穩(wěn)定排序算法。

希爾排序是基于插入排序的以下兩點(diǎn)性質(zhì)而提出改進(jìn)方法的:

  • 插入排序在對幾乎已經(jīng)排好序的數(shù)據(jù)操作時(shí),效率高,即可以達(dá)到線性排序的效率;

這個(gè)結(jié)論很明顯,如果一個(gè)數(shù)組大部分元素都有序,那么數(shù)組中的元素自然不需要頻繁地進(jìn)行比較和交換。

  • 在元素?cái)?shù)量較少的情況下,插入排序的工作量較小

這個(gè)結(jié)論更加顯而易見,插入排序的工作量和n的平方成正比,如果n比較小,那么排序的工作量自然要小得多

也就是說:如果我們對數(shù)據(jù)做一些 “預(yù)處理”,使得原始數(shù)組的大部分元素變得有序,那么我們再使用插入算法進(jìn)行排序,那么排序的效率將會(huì)大大提高。希爾排序正事基于這種思路實(shí)現(xiàn)的。

舉個(gè)栗子

這是我們現(xiàn)在拿到的原始數(shù)組: 何為希爾排序

第一輪,我們?nèi)】傞L度的一半,也就是4,作為跨度,這樣兩兩一組,總共事4組: 何為希爾排序

接下來,我們讓每組元素進(jìn)行獨(dú)立排序,排序方式用直接插入排序即可。由于每一組的元素?cái)?shù)量很少,只有兩個(gè),所以插入排序的工作量很少。每組排序完成后的數(shù)組如下:

何為希爾排序

這樣一來,僅僅經(jīng)過幾次簡單的交換,數(shù)組整體的有序程度得到了顯著提高,使得后續(xù)再進(jìn)行直接插入排序的工作量大大減少。這種做法,可以理解為對原始數(shù)組的“粗略調(diào)整”。 但是這樣還不算完,我們可以進(jìn)一步縮小分組跨度,重復(fù)上述工作。把跨度縮小為原先的一半,也就是跨度為2,重新對元素進(jìn)行分組,一共兩組: 何為希爾排序

接下來,我們繼續(xù)讓每組元素進(jìn)行獨(dú)立排序,排序方式用直接插入排序即可。每組排序完成后的數(shù)組如下:

何為希爾排序

最后,我們把分組跨度進(jìn)一步減小,讓跨度為1,也就等同于做直接插入排序。經(jīng)過之前的一系列粗略調(diào)整,直接插入排序的工作量減少了很多,排序結(jié)果如下:

何為希爾排序

讓我們重新梳理一下分組排序的整個(gè)過程:

何為希爾排序

代碼實(shí)現(xiàn):

    public static int[] sort(int[] arr) {
        if (arr.length < 2) {
            return arr;
        }
        int step = arr.length / 2;
        for (; step > 0; step /= 2) {
            for (int i = step; i < arr.length; i++) {
                int temp = arr[i];
                int j = i;
                for (; j >= step && temp < arr[j - step]; j -= step) {
                    //符合條件往后移
                    arr[j] = arr[j - step];
                }
                arr[j] = temp;
            }
        }
        return arr;
    }

感謝各位的閱讀,以上就是“何為希爾排序”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對何為希爾排序這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


新聞標(biāo)題:何為希爾排序
本文URL:http://weahome.cn/article/psodih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部