java 排序算法实现 其五:希尔排序

来源:互联网 发布:游戏碎片整理软件 编辑:程序博客网 时间:2024/05/01 22:02


希尔排序是第一批将冲破二次时间屏障的排序算法之一,名称源于它的发明者:Donald Shell


希尔排序的思想是:

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





 * 希尔排序 * @param arr */private static void shellSort(int[] arr) {//第一次的gapint gap = arr.length;while (true) {gap = (int) Math.ceil(gap / 2);for (int x = 0; x < gap; x++) {for (int i = x + gap; i < arr.length; i += gap) {//对每一组进行直接选择排序int j = i - gap;int temp = arr[i];for (; j >= 0 && temp < arr[j]; j -= gap) {arr[j + gap] = arr[j];}arr[j + gap] = temp;}}if (gap == 1) {break;}}}





0 0
原创粉丝点击