1. /** 
  2.  * 希尔排序 
  3.  * 算法描述: 
  4.  * 先取一个正整数d1<n,把所有序号相隔d的数组元素放在一组,组内进行直接插入排序; 
  5.  * 然后取d2<d1,重复上述分组和排序操作; 
  6.  * 直至di=1,及所有记录放进一个组中排序为止; 
  7.  * 增量d选取有很多种方法。 
  8.  * @param arr 
  9.  */ 
  10. public static void shellSort(int[] arr) { 
  11.     int i, j; 
  12.     int temp; 
  13.     int d = arr.length / 2
  14.      
  15.     while (d > 0) { 
  16.         for (i = d; i < arr.length; i++) { 
  17.             temp = arr[i]; 
  18.             for (j = i - d; j >=0 && arr[j] > temp; j -= d) 
  19.                 arr[j + d] = arr[j]; 
  20.             arr[j + d] = temp; 
  21.         } 
  22.         d /= 2
  23.     }