1. 程式人生 > 實用技巧 >Java 基礎 - XML和常見解析

Java 基礎 - XML和常見解析

技術標籤:JAVA基礎排序演算法java插入排序排序演算法資料結構

希爾排序是一種相對高階的插入排序;
想看插入排序戳這裡
原理:我們將待排序的資料分為幾組並每組進行排序,則排序過後的資料重新分組(分更少的組);每組的資料雖然多了但是有了初次的排序,排序反而快速了。
為了方便理解,我們舉個例子:
在這裡插入圖片描述
我們假設有六個數字並且他們的順序為6,5,4,3,2,1
那麼初次分組的時候我們對資料長度除以2;也就是兩兩分組。如上述顏色所示6-3;5-2;4-1;
此後對其進行插入排序。

在這裡插入圖片描述
隨後再次進行分組;此時分組為3/2=1所以只分一組就可以了。在進行插入排序。
也就是說整個過程其實還是插入排序,只不過中間加入了一個分組迴圈。

程式碼如下:

	public static void Shellsort(int[] a){
		 int gap = a.length / 2;
	     while (1 <= gap) {
	         //  把距離為 gap 的元素編為一個組,掃描所有組
	         for ( int i = gap; i < a.length; i++) {
	             int j = 0;
	             int temp = a[i];
	             //  對距離為 gap 的元素組進行排序
	             for (j =
i - gap; j >= 0 && temp < a[j]; j = j - gap) { a[j + gap] = a[j]; } a[j + gap] = temp; } gap = gap / 2; // 減小增量 } }