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