日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

希尔排序--Java

發布時間:2025/3/12 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 希尔排序--Java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

希爾排序

排序原理:

1、選定一個增量h,按照增長量h作為數據分組的依據,對數據進行分組

2、對分好組的每一組數據完成插入排序

3、減小增長量,最小減為1,重復第二步操作

其中,希爾排序確定增長量h的規則:

int h = 1; while(h<數組長度/2){h = 2h+1; } //循環結束后我們可以確定h的最大值; h的減小規則為: h = h/2;

代碼實現:

package demo02.sort;public class Shell {/*** 對數組a中的元素進行排序*/public static void sort(Comparable[] a){//1.根據數組a的長度,確定增長量h的初始值int h = 1;while(h<a.length/2){h = 2*h+1;}//2、希爾排序while(h>=1){//排序//2.1找到待插入的元素for (int i = h; i < a.length; i++) {//2.2把待插入的元素插入到有序數組中for (int j = i; j >=h; j-=h) {//待插入的元素是a[j],比較a[j]和a[j-h]if (greater(a[j-h],a[j])){exch(a,j-h,j);}else {break;}}}//減小h的值h = h/2;}}/*** 比較v元素是否大于w元素*/private static boolean greater(Comparable v,Comparable w){return v.compareTo(w)>0;}/*** 數組元素i和j交換位置*/private static void exch(Comparable[] a,int i,int j){Comparable temp;temp = a[i];a[i] = a[j];a[j] = temp;} } package demo02.test; import demo02.sort.Shell; import java.util.Arrays; public class TestShell {public static void main(String[] args) {Integer[] a = {9,1,2,5,7,4,8,6,3,5};Shell.sort(a);System.out.println(Arrays.toString(a));} }

運行結果:

總結

以上是生活随笔為你收集整理的希尔排序--Java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。