先將整個待排序的記錄序列分割成為若干子串行分別進行直接插入排序,待整個序列中的記錄「基本有序」時,再對全體記錄進行依次直接插入排序。
操作方法:
選擇乙個增量序列t1,t2,…,tk,其中ti>tj,tk=1;
按增量序列個數k,對序列進行k 趟排序;
每趟排序,根據對應的增量ti,將待排序列分割成若干長度為m 的子串行,分別對各子表進行直接插入排序。僅增量因子為1 時,整個序列作為乙個表來處理,表長度即為整個序列的長度。
package com.whut.chenl.sort;
public class hellsort else
}array[position] = temp;
}gap /= 2;
} return array;
}public void printarray(int array) }
public static void main(string args) ;
sort.printarray(array);
sort.printarray(sort.hellsort(array));
}}
希爾排序 Java實現
希爾排序實際上是針對插入排序的一種優化演算法。當被插入的元素要移動到陣列的開始位置時需要比較的次數相當大,通過改變相鄰的元素比較為距離間隔為h的元素比較 h逐漸減小為1 就能減少比較的次數。如下 public class tester shellsort t for int a t 將陣列中下標為i...
希爾排序 Java實現
希爾排序是對插入排序的優化,減少了元素移動位置的次數,又叫做縮小增量排序 先將待排序的陣列元素按照增量分成多個子串行,對每個子串行進行插入排序,直到子串行相對有序 然後縮小增量,重複第一步的操作 直到增量為1的時候,再最終進行一次插入排序,使得元素有序。希爾排序 public static void...
希爾排序之Java實現
希爾排序思想 希爾排序其實就是將乙個陣列分段進行插入排序,最後再將分段序列組合在一起進行大的插入排序。也即 希爾排序是首先將陣列分成若干子陣列 一般子陣列的個數是n 2或者n m,n是陣列長度,m是分隔間距 然後每個子陣列進行插入排序 再縮減增量 一般縮減增量表示式是 k 2,k是上一次執行插入排序...