标签:交换 有助于 span 复杂度 插入排序 图片 data rri test
希尔排序图解:时间复杂度O(nlog2n),空间复杂度O(1)
数组:[243, 5, 7, 22, 3, 11]
核心代码实现:
1 package org.apel.test.rp.test.sort; 2 3 /** 4 * 希尔排序 5 * @author alex lee 6 * 7 */ 8 public class ShellSort extends AbstractSort{ 9 10 public ShellSort(int[] data) { 11 super(data); 12 } 13 14 @Override 15 public void sort() { 16 /* 17 * 步长逐渐递减,先让局部有序,有助于让最终的h=1(标准插入排序)时效率更高,减少比较次数和交换次数 18 */ 19 int h = 1; 20 while(h < data.length / 3) h = 3 * h + 1;//计算步长 21 while(h >= 1) { 22 for (int i = h; i < data.length; i++) { 23 for (int j = i; j >= h && (data[j - h] > data[j]); j -= h) { 24 swap(data, j, j - h); 25 } 26 } 27 h = h / 3; 28 } 29 } 30 31 }
标签:交换 有助于 span 复杂度 插入排序 图片 data rri test
原文地址:http://www.cnblogs.com/madAlex/p/7920026.html