Java实现希尔排序

1、希尔排序的基本概念

希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。它是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

2、基本流程:

Java实现希尔排序_第1张图片

3、时间复杂度:

希尔排序的时间的时间复杂度为O( n^(3/2)),希尔排序时间复杂度的下界是n*log2n。

4、代码实现:

import java.util.Arrays;

public class ShellSelcetion {

	public static void main(String[] args) {
		int[] array= {2,3,5,1,23,6,78,34,23,4};
		int[] a = shell(array);
		System.out.println(Arrays.toString(array));
	}
	private static int[] shell(int[] array) {
		int gap;
		gap = array.length/2;
		while(gap>0) {
			for(int i = gap;i<array.length;i++) {
				int j = i;
				int temp = array[j];
				while(j-gap>=0&&array[j]<array[j-gap]) {
					array[j] = array[j-gap];
					j=j-gap;
				}
				array[j] = temp;
			}
			gap=gap/2;
		}
		return array;
	}

}

5、输出:

[1, 2, 3, 4, 5, 6, 23, 23, 34, 78]

你可能感兴趣的:(Java,希尔排序,Java,算法)