希尔排序

Posted bsc2012

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序相关的知识,希望对你有一定的参考价值。

插入排序的升级,先设比较大的步长进行插入排序,然后步长逐步减少,最后保证步长为1的一次插入排序即可

请参考插入排序排序接口与抽象类(java)

package com.bsc.algorithm.sort.shell;

import com.bsc.algorithm.sort.insert.InsertSort;

/**
 * 希尔排序
 * 
 * @author bsc
 *
 */
public class ShellSort<T extends Comparable<T>> extends InsertSort<T> {
    protected void sort(T[] data, int cr) {
        int length = data.length;
        //初始步长为数组长度的一半
        int increment = length / 2;
        while (increment > 0) {
            //进行插入排序
            sort(data, cr, increment);
            //步长每次减少一半(保证最后一次排序步长为1)
            increment = increment / 2;
        }
    }
}

 

以上是关于希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

希尔排序

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序JAVA代码

《算法》笔记 3 - 选择排序插入排序希尔排序