图解排序算法-希尔排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图解排序算法-希尔排序相关的知识,希望对你有一定的参考价值。
希尔排序图解:时间复杂度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 }
以上是关于图解排序算法-希尔排序的主要内容,如果未能解决你的问题,请参考以下文章