希爾排序(Java實現(xiàn))

封裝成類:

package com.roc.algorithms.sort;

/**
 * 希爾排序
 *
 * @author imroc
 */
public class ShellSort {
    //交換數(shù)組元素
    private static void swap(int[] a, int i, int j) {
        int t = a[i];
        a[i] = a[j];
        a[j] = t;
    }

    public static void sort(int[] a) {
        int h = 1;
        while (h < a.length / 3) {//尋找合適的間隔h
            h = 3 * h + 1;
        }
        while (h >= 1) {
            //將數(shù)組變?yōu)殚g隔h個元素有序
            for (int i = h; i < a.length; i++) {
                //間隔h插入排序
                for (int j = i; j >= h && a[j] < a[j - h]; j -= h) {
                    swap(a, j, j - h);
                }
            }
            h /= 3;
        }
    }
}

測試:

int[] a = {9,0,6,5,8,2,1,7,4,3};
System.out.println(Arrays.toString(a));
ShellSort.sort(a);
System.out.println(Arrays.toString(a));

輸出:
[9, 0, 6, 5, 8, 2, 1, 7, 4, 3]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 風(fēng)猛烈地刮著,空曠的官道上死氣沉沉的,一個人也沒有。 蔚藍的天空上被烏云所掩蓋了,黑沉沉的,看樣子一場暴風(fēng)雨即將來...
    死小魚閱讀 549評論 0 0
  • 問題描述: 配置網(wǎng)絡(luò)時,很多新手運行ifconfig命令查看網(wǎng)卡時,會發(fā)現(xiàn)我們熟悉的eth0網(wǎng)卡沒有了,或是發(fā)現(xiàn)一...
    孤逐王閱讀 1,438評論 0 1
  • 今天是第一次有目標的教孩子背詩,目標是今天必須背下來一首詩才可以結(jié)束,但是整個過程簡直是對我的折磨。 ...
    4點半的恩賜閱讀 201評論 0 1

友情鏈接更多精彩內(nèi)容