排序算法(七.希尔排序-改进的插入排序2)
上篇博客介绍了希尔排序的算法思想及具体实现,本文主要想继续研究下希尔排序中采用的增量序列 (gap序列),上篇博客的实现都是基于Shell 增量序列 即 n/2 实现的。
增量序列介绍
Shell 增量序列
Hibbard 增量序列
Knuth 增量序列
Gonnet 增量序列
Sedgewick 增量序列
此处仅做了简单罗列,有兴趣的同学可以自行查阅资料了解详细介绍哈。
knuth增量序列
本文主要来简单介绍下knuth序列,效率据说会高于shell序列
h = 1
h = 3h + 1
大概序列就是:1, 4, 13 …
基于knuth增量序列的实现
/**
* <p>@filename ShellSort</p>
* <p>
* <p>@description 基于knuth序列的希尔排序Java实现</p>
*
* @author Java猿人一枚
* @version 1.0
* @since 2019/4/2 22:30
**/
public class ShellSort1 {
public static void main(String[] args) {
int[] nums = new int[]{100,34,52,6,8,78,95};
System.out.println("待排序数组:" + Arrays.toString(nums));
int[] result = shellSortKnuth(nums);