91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java希爾排序怎么實現

發布時間:2021-12-22 15:47:44 來源:億速云 閱讀:121 作者:iii 欄目:編程語言

這篇文章主要講解了“Java希爾排序怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java希爾排序怎么實現”吧!

希爾排序(shell sort)是插入排序的一種,它是簡單插入排序經過改進之后的一個更高效的算法,這個排序方法又稱為縮小增量排序。

希爾排序思想介紹

簡單來說,希爾排序是將較大的數據集合邏輯上分割成若干個小的集合,然后對每個分組分別進行插入排序。

例如,假設待排序元素序列有n個元素,首先取一個整數increment(小于n)作為間隔將全部元素分為increment個子序列,在每一個子序列中分別實行直接插入排序。然后縮小間隔increment,重復上述子序列劃分和排序工作。直到最后取increment=1,將所有元素放在同一個子序列中排序為止。

算法說明:

待排序數據:12,1,6,7,4,10,5,9

第一次的增量為數組元素的長度/2,即increment=4,得到四個分組:

分組一:12,             4

分組二:      1,              10

分組三:          6,                  5

分組四:             7,                    9

對這四個分組分別進行插入排序,最終得到:

4,1,5,7,12,10,6,9

第二次比較,increment取上次值的一半,即increment=2,得到兩個分組:

分組一:4,  5,  12, 6

分組二:    1, 7,  10, 9

對這兩個分組分別進行插入排序,最終得到:

4, 1, 5,7, 6,9,12,10

第三次比較,increment=1,即只有一個分組:

分組一:4,1,5,7,6,9,12,10

   對其進行插入排序,最終得到:

1,4,5,6,7,9,10,12

希爾排序的代碼實現

1. public static void shellSort(int[] arr){  

2.     int temp = 0;  

3.     int j = 0;  

4.     //增量初始值是長度的一半,增量每次變為原來的一半  

5.     for(int inc = arr.length/2 ; inc >= 1 ; inc /= 2){  

6.         for(int i = inc ; i < arr.length; i++){  

7.             temp = arr;  

8.             //將當前數與減去增量之后位置的數進行比較,如果大于,則后移  

9.             for(j = i - inc; j >=0; j -= inc){  

10.                 if(arr[j] > temp){  

11.                     arr[j + inc] = arr[j];  

12.                 }else{  

13.                     break;  

14.                 }  

15.             }  

16.             arr[j + inc]=temp;  

17.         }  

18.     }  

19. }  

感謝各位的閱讀,以上就是“Java希爾排序怎么實現”的內容了,經過本文的學習后,相信大家對Java希爾排序怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苏州市| 年辖:市辖区| 漾濞| 嘉兴市| 河池市| 华亭县| 广宗县| 图木舒克市| 宁河县| 德化县| 兰溪市| 临夏县| 阳新县| 宁晋县| 博罗县| 寻甸| 武义县| 津市市| 屏东县| 扶余县| 通江县| 手游| 绥棱县| 普定县| 西畴县| 临夏市| 纳雍县| 广东省| 东乡县| 济宁市| 枣庄市| 稷山县| 金湖县| 和平区| 三原县| 象州县| 额尔古纳市| 通化市| 察隅县| 乐陵市| 中西区|