1. 程式人生 > >希爾排序——Java實現

希爾排序——Java實現

length 技術分享 author lock play java實現 mar bsp 演示

一、排序思想

希爾排序(Shell’s Sort)是插入排序的一種,是直接插入排序算法的一種更高版本的改進版本。

  1. 把記錄按步長gap分組,對每組記錄采用直接插入排序方法進行排序;
  2. 隨著步長逐漸減小,所分成的組包含的記錄越來越多;
    當步長值減小到1時,整個數據合成一組,構成一組有序記錄,完成排序;

二、圖解

技術分享圖片

技術分享圖片

三、代碼實現

/**
 * 希爾排序演示
 * @author Lvan
 */
public class ShellSort {
    public static void main(String[] args) {
        int[] arr = {5, 1, 7, 3, 1, 6, 9, 4};
        shellSort(arr);

        
for (int i : arr) { System.out.print(i + "\t"); } } private static void shellSort(int[] arr) { //step:步長 for (int step = arr.length / 2; step > 0; step /= 2) { //對一個步長區間進行比較 [step,arr.length) for (int i = step; i < arr.length; i++) {
int value = arr[i]; int j; //對步長區間中具體的元素進行比較 for (j = i - step; j >= 0 && arr[j] > value; j -= step) { //j為左區間的取值,j+step為右區間與左區間的對應值。 arr[j + step] = arr[j]; } //此時step為一個負數,[j + step]為左區間上的初始交換值
arr[j + step] = value; } } } }

希爾排序——Java實現