希尔排序

基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。

 1 public static void main(String[] args){
 2         int a[] = {34, 8, 64, 51, 32, 21};
 3         shellSort(a);
 4         for (int i = 0; i < a.length; i++) {
 5             System.out.print(a[i] + " ");
 6         }
 7     }
 8     
 9     public static void shellSort(int[] a) {
10         for (int gap = a.length/2; gap > 0; gap /= 2) {
11             for (int i = gap; i < a.length; i++) {
12                 int temp = a[i];
13                 int j;
14                 for (j = i; j >= gap && temp < a[j-gap]; j -= gap) {
15                     a[j] = a[j-gap];
16                 }
17                 a[j] = temp;
18             }
19         }
20     }

 

posted on 2015-07-28 14:38  pokemonzj  阅读(153)  评论(0编辑  收藏  举报

导航