码迷,mamicode.com
首页 > 编程语言 > 详细

希尔排序

时间:2020-02-12 18:40:24      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:info   希尔   oid   文件   ima   距离   数字   png   技术   

1.希尔排序
希尔排序法又称缩小增量法。是直接排序的优化。

2.基本思想
希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成一个组,所有距离为一样的记录分在同一组内,并对每一组内的记录进行排序。然后取整数一半的值,重复上述分组和排序的工作。当值到达1时,所有记录在同一组内排好序。

3.图解(按从小到大排序,以6个数字为例)
①将整个数组分组gap=arr.length/2;如图颜色一样的为一组。
技术图片
②将颜色一样的值进行比较,小的换到前面,大的换到后面;再进行分组gap=gap/2,如图颜色一样的为一组。
技术图片
③重复上述步骤。
技术图片
④最终排好的序列如图。
技术图片

4.代码实现

public static void shellSort(int[] array) {  
        int gap = array.length;
        while (gap > 1) {
            gap = gap / 2;
            insertGap(array, gap);
        }
        insertGap(array, 1);
    }
    public static void insertGap(int[] array, int gap) {   
        for (int bound = 1; bound < array.length; bound++) {
            int tmp = array[bound];
            int cur = bound - gap;
            for (cur = bound - gap; cur >= 0; cur -= gap) {
                if (array[cur] > tmp) {
                    array[cur + gap] = array[cur];
                } else {
                    break;
                }
            }
            array[cur + gap] = tmp;
        }
    }

希尔排序

标签:info   希尔   oid   文件   ima   距离   数字   png   技术   

原文地址:https://blog.51cto.com/14298563/2470670

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!