日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

【十大经典排序算法】java实现--希尔排序(4)

發(fā)布時間:2025/5/22 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【十大经典排序算法】java实现--希尔排序(4) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

希爾排序概述: 先將整個待排序的記錄序列分割成為若干子序列分別進(jìn)行直接插入排序,待整個序列中的記錄"基本有序"時,再對全體記錄進(jìn)行依次直接插入排序。

  • 選擇一個增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1
  • 按增量序列個數(shù) k,對序列進(jìn)行 k 趟排序
  • 每趟排序,根據(jù)對應(yīng)的增量 ti,將待排序列分割成若干長度為 m 的子序列,分別對各子表進(jìn)行直接插入排序。僅增量因子為 1 時,整個序列作為一個表來處理,表長度即為整個序列的長度。
public class ArrayDemo {/*希爾排序:先將整個待排序的記錄序列分割成為若干子序列分別進(jìn)行直接插入排序,待整個序列中的記錄"基本有序"時,再對全體記錄進(jìn)行依次直接插入排序。 */public static void main(String[] args) {//定義一個數(shù)組int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + arrayToString(arr));int gap = 1;while (gap < arr.length) {gap = gap * 3 + 1;}while (gap > 0) {for (int i = gap; i < arr.length; i++) {int tmp = arr[i];int j = i - gap;while (j >= 0 && arr[j] > tmp) {arr[j + gap] = arr[j];j -= gap;}arr[j + gap] = tmp;}gap = (int) Math.floor(gap / 3);}System.out.println("排序后:" + arrayToString(arr));}//把數(shù)組中的元素按照指定的規(guī)則組成一個字符串:[元素1, 元素2, ...]public static String arrayToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(", ");}}sb.append("]");String s = sb.toString();return s;}}

輸出結(jié)果

總結(jié)

以上是生活随笔為你收集整理的【十大经典排序算法】java实现--希尔排序(4)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。