希爾排序 Java

2021-08-17 09:37:21 字數 882 閱讀 5886

原理:對於n個待排序的數列,取乙個小於n的整數gap(gap被稱為步長)將待排序元素分成若干個組子串行,所有距離為gap的倍數的記錄放在同乙個組中;然後,對各組內的元素進行直接插入排序。 這一趟排序完成之後,每乙個組的元素都是有序的。然後減小gap的值,並重複執行上述的分組和排序。重複這樣的操作,當gap=1時,整個數列就是有序的。

**:

public class shellsort ;

system.out

.printf("before sort:");

for (i = 0

; i < a.length

; i++)

system.out

.printf("%d "

, a[i]);

system.out

.printf("

\n");

shellsort1(a, a.length);

system.out

.printf("after sort:");

for (i = 0

; i < a.length

; i++)

system.out

.printf("%d "

, a[i]);

system.out

.printf("

\n");

} public static void

shellsort1(int a, int n)

a[k + gap] = tem;

} }}}

}}

結果:

參考部落格:

Java 希爾排序

希爾排序示意圖 希爾排序,說實話有點難,不過還是弄出來了,package com.vgbh public class shellsorting 希爾排序 將無序陣列分割為若干個子串行,子串行不是逐段分割的,而是相隔特定的增量的子串行,對各個子串行進行插入排序 然後再選擇乙個更小的增量,再將陣列分割為...

java 希爾排序

希爾排序也成為 縮小增量排序 其基本原理是,現將待排序的陣列元素分成多個子串行,使得每個子串行的元素個數相對較少,然後對各個子串行分別進行直接插入排序,待整個待排序列 基本有序 後,最後在對所有元素進行一次直接插入排序。因此,我們要採用跳躍分割的策略 將相距某個 增量 的記錄組成乙個子串行,這樣才能...

Java 希爾排序

希爾排序,也叫遞減增量排序,是插入排序的一種更高效的改進版本。希爾排序是基於插入排序的。將插入排序演算法 內for迴圈中的所有 1 改為增量就可以。希爾排序是基於插入排序的以下兩點性質而提出改進方法的 基本思想 先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分組。所有距離為d1的倍數的記錄...