码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-05-12 19:06:23      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:插入排序   sort   基础   blog   复杂   n+1   class   bsp   希尔排序   

 

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

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

 

希尔算法是希尔(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)

标签:插入排序   sort   基础   blog   复杂   n+1   class   bsp   希尔排序   

原文地址:http://www.cnblogs.com/tomasman/p/6846559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!