java排序之shell排序 希爾排序 (四)

2021-06-29 14:45:52 字數 535 閱讀 5203

shell排序是一種相對我之前寫的冒泡,選擇,插入排序更加高效的排序演算法;

它的基層排序思想還是用的插入排序的思想,但加入了縮小增量的思想;流程如下:

1、將n個元素的陣列分成n/2個序列,第1個資料與第n/2+1個資料為一對,第2個資料與第n/2+2個資料為一對....

2、一次迴圈使每乙個序列對排好序。

3、然後再分為n/4個序列,第乙個資料與第n/4+1個資料為一對...再次排序

4、不斷重複上述過程,當序列對變為1時,相當於執行一次插入排序,完成排序。

/* * 例如:一組10個資料:

* 第一次分5組:p[0]與p[5]比較,總共比較5次

* 第二次10/4=2組,p[0]與p[2]比較,總共比較8次

* 第三次10/8=1組,總共比較9次

*/下面給出兩種寫法如下:

//第一種寫法,可參照之前的插入排序理解

static int shellsort(int p)}}

return p;

}

JAVA實現Shell排序

shell排序可以理解為插入排序的變種,它充分利用了插入排序的兩個特點 1 當資料規模小的時候非常高效。2 當給定資料已經有序時的時間代價為o n 所以,shell排序每次把資料分成若干塊,來使用插入排序,而且之後在這若干個小塊排好序的情況下把它們合成大一點的小塊,繼續使用插入排序,不停的合併小塊,...

排序演算法之Shell排序(希爾排序)

shell排序 思想 先可進行分組,再利用插入排序。分組的方法是根據步長的設定從a 0 開始,並且不大於步長,組內相鄰兩個元素的邏輯距離是gap。分組結束的標誌是gap為0,也就是已經全部按照大小排列。推薦閱讀 給定陣列shell排序,從小到大排列。include int main gap 10 2...

java排序之氣泡排序

假設一籃球隊,成一佇列排列在籃球場上,每個人的身高都不相同,這樣的話就會成下面這種 現在呢,要對他們以身高進行排列讓他們成下面這種情況 採用氣泡排序的方式歷程如下 熊佇列的最左邊第一位 簡稱左一 起,讓他與最左邊第二位 左二 進行比較,如果左一的身高高於左二,那麼讓左一與左二調換位置 接下來對比左二...