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

  • 相关阅读:
    SQL 执行进展优化
    初识SQL 执行顺序
    前端模块化开发的价值(转)
    js 闭包之一
    js模块开发(一)
    简单说说call 与apply
    js 爱恨情仇说 this
    说说 js String
    $Ajax简单理解
    SQL-如何使用 MongoDB和PyMongo。
  • 原文地址:https://www.cnblogs.com/tomasman/p/6846559.html
Copyright © 2011-2022 走看看