zoukankan      html  css  js  c++  java
  • Java学习笔记——排序算法之希尔排序(Shell Sort)

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

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

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

    其基础是插入排序。

    上代码:

     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)⌋)

  • 相关阅读:
    Go语言v1.8正式发布,有显著的性能提升和变化(go适合服务器编程、网络编程)
    NET生成二维码
    组合模式
    Spring MVC
    前端事件
    Play Framework + ReactiveMongo
    DDD领域驱动设计初探
    jsRender模板引擎
    C#分布式缓存Couchbase
    ABP
  • 原文地址:https://www.cnblogs.com/tomasman/p/6846559.html
Copyright © 2011-2022 走看看