1. 程式人生 > >Java實現的希爾排序演算法

Java實現的希爾排序演算法

一:希爾排序演算法基本思想

希爾排序(Shell's Sort)插入排序的一種又稱縮小增量排序Diminishing Increment Sort),是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因D.L.Shell1959年提出而得名。

希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;隨著增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個檔案恰被分成一組,演算法便終止。

二:希爾排序視訊講解網址

(網頁找到的視訊,可以通過觀看更好的理解演算法思想)

三:原始碼具體實現

package com.stu.demo;

import java.util.Arrays;

public class ShellSortDemo5 {
	public static void shellSort(int arr[], int increment) {
		int j;
		int tmp;
		increment = increment / 3 + 1;
		for (int i = increment; i < arr.length; i++) {
			j = i - increment;
			tmp = arr[i];
			while (j >= 0 && tmp < arr[j]) {
				arr[j + increment] = arr[j];
				j -= increment;
			}
			arr[j + increment] = tmp;
		}
		if (increment <= 1) {
			return;
		}
		shellSort(arr, increment);
	}

	public static void main(String[] args) {
		int arr[] = { 102223, 20, 32, 23, 24, 121, 53455, 21 };
		shellSort(arr, 5);
		System.out.println(Arrays.toString(arr));
	}

}