Java学习笔记——排序算法之希尔排序(Shell Sort)

Posted Tomas曼

tags:

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

 

落日楼头,断鸿声里,江南游子。把吴钩看了,栏杆拍遍,无人会,登临意。

                                 ——水龙吟·登建康赏心亭

 

希尔算法是希尔(D.L.Shell)于1959年提出的一种排序算法。是第一个时间复杂度突破O(n2)的算法之一。

其基础是插入排序。

上代码:

 1 public class ShellSort {
 2 
 3     public static void shellSort(int[] arr){
 4         
 5         int increment = arr.length;
 6         int temp;//
 7         int i;
 8         int j;
 9         do {
10             increment = increment/3 + 1;//增量
11             for (i = increment; i < arr.length; i++) {
12                 if (arr[i] < arr[i - increment]) {
13                     temp = arr[i];
14                     for (j = i - increment; j >= 0 && temp < arr[j]; j -= increment) {
15                         arr[j] =arr[j]^arr[j + increment];
16                         arr[j + increment] =arr[j]^arr[j + increment];
17                         arr[j] =arr[j]^arr[j + increment];
18                     }
19                 }
20             }
21         } while (increment > 1);
22     }
23 }

增量选取△k = 2^(t-k+1)-1 (0≤k≤t≤?log2(n+1)?)

以上是关于Java学习笔记——排序算法之希尔排序(Shell Sort)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA算法之希尔排序

希尔排序学习笔记

Java学习笔记之十一Java中常用的8大排序算法详解总结

八大排序算法之二希尔排序(Shell`s Sort)

面试之希尔排序——她也阔以优化!!!

数据结构和算法(十四)排序算法之希尔排序