排序算法-希爾排序

前言:排序是現(xiàn)在程序員的必備技能搔弄,是很多公司的面試必考點幅虑,不管是做移動端,后端開發(fā)顾犹,排序是繞不過的倒庵,眾生平等。學(xué)習(xí)其排序的思想往往能解決不同類型的問題炫刷,所以靜下心來擎宝,研究一下不同的排序算法,算是對自己有一個提升浑玛。

排序概述:排序就是將一組對象按照某種邏輯順序重新排列的過程绍申。

十大排序算法:冒泡排序,選擇排序顾彰,插入排序极阅,歸并排序,堆排序涨享,快速排序筋搏,希爾排序,計數(shù)排序厕隧,基數(shù)排序奔脐,桶排序。

本文對希爾排序走一個解析:

希爾排序步驟:

1.一種基于插入排序的快速排序算法吁讨。簡單插入排序?qū)τ诖笠?guī)模亂序數(shù)組很慢帖族,因為元素只能一點一點得從數(shù)組一端移動到另一端。例如挡爵,如果主鍵最小的元素正好在數(shù)組的盡頭竖般,要將它挪到正確的位置就需要N-1次移動。

2.希爾排序為了加快速度簡單地改進(jìn)了插入排序茶鹃,也稱為縮小增量排序涣雕,同時該算法突破0(n^2)的第一批算法之一艰亮。

3.希爾排序是把待排序數(shù)組按一定數(shù)量的分組,對每組使用直接插入排序算法排序挣郭;然后縮小數(shù)量繼續(xù)分組排序迄埃,隨著數(shù)量逐漸減少,每組包含的元素越來越多兑障,當(dāng)數(shù)量減至1時侄非,整個數(shù)組恰被分成一組,排序就完成了流译。這個不斷縮小的數(shù)量逞怨,就構(gòu)成了一個增量序列。

代碼舉例:

對一個數(shù)組進(jìn)行排序:(86,11,77,23,32,45,58,63,93,4,37,22)

int[] array = {86,11,77,23,32,45,58,63,93,4,37,22};

排序代碼展示:?

希爾排序

調(diào)用sort方法后打印如下:

希爾排序打印


對該案例進(jìn)行分析:(86,11,77,23,32,45,58,63,93,4,37,22)

(1) ?當(dāng)gap = 6福澡,因為該數(shù)組長度為12叠赦,那么就從58開始 到22這一組, 根據(jù)排序代碼所知:currentValue = 58(待排序元素)preIndex = 0 ? currentValue < 第0個位置也就是86革砸。?滿足while條件進(jìn)入:58這個位置變成了86 ?第0個位置就變成了58.直至for循環(huán)結(jié)束除秀,完成了第一組排序。

? ? ? ? ?數(shù)組變成 ------》 [58, 11, 77, 4, 32, 22, 86, 63, 93, 23, 37, 45]?

(2)當(dāng)gap = 3,因為該數(shù)組長度為12. ?那么就從4開始 到45這一組依然按照第(1)順序進(jìn)行操作算利。

? ? ? ? ?數(shù)組變成 ------》 [4, 11, 22, 23, 32, 45, 58, 37, 77, 86, 63, 93]

(3)當(dāng)gap = 1,因為該數(shù)組長度為12. ?那么就從11開始 到93這一組依然按照第(1)順序進(jìn)行操作册踩。

? ? ? ? ?數(shù)組變成 ------》?[4, 11, 22, 23, 32, 37, 45, 58, 63, 77, 86, 93]

至此排序結(jié)束

?打印每個步驟的數(shù)組:

步驟打印

?至此希爾排序就到這里講解結(jié)束了,細(xì)看的話其實一點也不復(fù)雜效拭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暂吉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子允耿,更是在濱河造成了極大的恐慌借笙,老刑警劉巖扒怖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件较锡,死亡現(xiàn)場離奇詭異,居然都是意外死亡盗痒,警方通過查閱死者的電腦和手機蚂蕴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俯邓,“玉大人骡楼,你說我怎么就攤上這事』蓿” “怎么了鸟整?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朦蕴。 經(jīng)常有香客問我篮条,道長弟头,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任涉茧,我火速辦了婚禮赴恨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伴栓。我一直安慰自己伦连,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布钳垮。 她就那樣靜靜地躺著惑淳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扔枫。 梳的紋絲不亂的頭發(fā)上汛聚,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機與錄音短荐,去河邊找鬼倚舀。 笑死,一個胖子當(dāng)著我的面吹牛忍宋,可吹牛的內(nèi)容都是我干的痕貌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼糠排,長吁一口氣:“原來是場噩夢啊……” “哼舵稠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起入宦,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤哺徊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乾闰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體落追,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年涯肩,在試婚紗的時候發(fā)現(xiàn)自己被綠了轿钠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡病苗,死狀恐怖疗垛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情硫朦,我是刑警寧澤贷腕,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響泽裳,放射性物質(zhì)發(fā)生泄漏芽世。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一诡壁、第九天 我趴在偏房一處隱蔽的房頂上張望济瓢。 院中可真熱鬧,春花似錦妹卿、人聲如沸旺矾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箕宙。三九已至,卻和暖如春铺纽,著一層夾襖步出監(jiān)牢的瞬間柬帕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工狡门, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陷寝,地道東北人。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓其馏,卻偏偏與公主長得像凤跑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子叛复,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349