摘要:算法簡述希爾排序也叫作排序或縮小增量排序,據(jù)說是一個叫的人發(fā)明出來的,顧取名排序。這種排序是基于插入排序思想的,也比較適用于數(shù)據(jù)量大時。
算法簡述
希爾排序也叫作shell排序或縮小增量排序,據(jù)說是一個叫D.L.Shell的人發(fā)明出來的,顧取名shell排序。這種排序是基于插入排序思想的,也比較適用于數(shù)據(jù)量大時。
我剛開始看到時候?qū)τ诓迦肱判蛞彩前肫孔哟祝苯訉?dǎo)致我看不懂了,抓狂,so...我就去默默的補(bǔ)習(xí)一下插入排序嘍。
插入排序簡介插入排序的核心思想是比較和插入,就是從第二個數(shù)開始,依次插入到前面合適的位置。排序步驟如下:
1. 首先對數(shù)組的前兩個數(shù)據(jù)進(jìn)行從小到大的排序 2. 接著將第3個數(shù)據(jù)與排序好的兩個數(shù)據(jù)進(jìn)行比較,插入合適的位置 3. 然后,將第4個數(shù)據(jù)插入已經(jīng)排好的前3個數(shù)據(jù)中 4. 不斷重復(fù)上述的過程,完成排序代碼實現(xiàn)
private void insertSort(int[] a) { int i,j,t,h; for(i =1;i=0&&t 簡單的介紹了一下插入排序,下面就講一下這個希爾排序。
排序步驟1.將有n個元素的數(shù)組分為n/2個數(shù)字序列,第1個數(shù)據(jù)和第n/2+1個數(shù)據(jù)為一對。。。 2.一次循環(huán)使每一個序列對排好順序(對每個序列使用插入排序算法,實質(zhì)是一種分組插入) 3.然后,再變?yōu)閚/4個序列,再次排序 4.不斷重復(fù)上述過程,隨著序列減少最后變?yōu)橐粋€,也就完成了整個排序。實例講解比如對{12,31,11,20,17,30}進(jìn)行希爾排序:
1. 第一次排序,首先將數(shù)組分為6/2=3個數(shù)字序列,第一個數(shù)據(jù)12和第四個數(shù)據(jù)20為一對,第二個數(shù)據(jù)和第五個數(shù)據(jù)為一對,第三個數(shù)據(jù)和第六個數(shù)據(jù)為一對,每一對進(jìn)行排序后數(shù)據(jù)為:12,17,11,20,31,30 2. 第二次排序,將數(shù)組劃分為6/4=1(這里取整),此時逐個對數(shù)據(jù)比較,按照插入排序算法進(jìn)行排序,排序后的數(shù)據(jù)為:11,12,17,20,30,31代碼片段private void shellSort(int[] a) { int i,j,h; int r,temp; int x = 0; for(r = a.length/2;r>=1;r/=2) { for(i = r;i=0&&temp 至此希爾排序就完成了,時間復(fù)雜度為O(nlog2n).
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64424.html
摘要:今天,一條就帶大家徹底跨過排序算法這道坎,保姆級教程建議收藏。利用遞歸算法,對分治后的子數(shù)組進(jìn)行排序。基本思想堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)而設(shè)計的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間復(fù)雜度均為,它也是不穩(wěn)定排序。 ...
摘要:動態(tài)定義間隔序列參考來源詳細(xì)介紹了十種算法大家可以去學(xué)習(xí)下以后大概會盡量每天更新一個算法學(xué)習(xí)吧溫故而知新 參考書:嚴(yán)蔚敏-數(shù)據(jù)結(jié)構(gòu) 希爾排序(Shells Sort) 希爾排序又稱縮小增量排序,歸屬于插入排序一類,簡單來說,和我們的插入排序比,它更快. 奇妙的記憶點(diǎn): 內(nèi)排序(內(nèi)存排序就夠了) 不穩(wěn)定(排序后原始順序無法保證) 希爾排序重點(diǎn)在于分割. 基本思想: 將整個待排序記錄序...
摘要:下面會介紹的一種排序算法快速排序甚至被譽(yù)為世紀(jì)科學(xué)和工程領(lǐng)域的十大算法之一。我們將討論比較排序算法的理論基礎(chǔ)并中借若干排序算法和優(yōu)先隊列的應(yīng)用。為了展示初級排序算法性質(zhì)的價值,我們來看一下基于插入排序的快速的排序算法希爾排序。 前言 排序就是將一組對象按照某種邏輯順序重新排列的過程。比如信用卡賬單中的交易是按照日期排序的——這種排序很可能使用了某種排序算法。在計算時代早期,大家普遍...
摘要:前面介紹了七大算法的思想與實現(xiàn)步驟,下面來做一個歸總。直到無序區(qū)中的數(shù)為零,結(jié)束排序。步驟以從小到大為例,排序數(shù)組大小為。比較完以后則排序結(jié)束。堆排序思想堆排序是采用樹的形式的數(shù)據(jù)結(jié)構(gòu)來進(jìn)行排序的,其中每一個堆都是完全二叉樹。 前面介紹了七大算法的思想與實現(xiàn)步驟,下面來做一個歸總。 排序方法 平均復(fù)雜度 最壞復(fù)雜度 最好復(fù)雜度 輔助空間 穩(wěn)定性 直接選擇排序 O(n^2...
閱讀 2326·2021-09-22 15:27
閱讀 3178·2021-09-03 10:32
閱讀 3506·2021-09-01 11:38
閱讀 2503·2019-08-30 15:56
閱讀 2220·2019-08-30 13:01
閱讀 1543·2019-08-29 12:13
閱讀 1425·2019-08-26 13:33
閱讀 899·2019-08-26 13:30