首页 > 代码库 > Java学习笔记——排序算法之希尔排序(Shell Sort)
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。