希尔排序(java实现)

  • 思路
  • 算法属性
  • 代码

 

思路

希尔排序是插入排序的加强版,算法最开始以一定的步长进行排序,然后会继续以更小的步长进行排序,最终算法以步长为 1 进行排序。当步长为 1 时,算法变为直接插入排序,这就保证了数据一定会被全部排序。

算法属性

排序类型 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性 复杂性
交换排序 O(NlogN) O(N^2)   O(1) 稳定 简单

代码

public static int[] shellSort(int[] inputList) {
	int size = inputList.length;
	if (size == 0) {
		return inputList;
	}
	int gap = size / 2;
	while (gap > 0) {
		for (int i = gap; i < size; i++) {
			int j = i - gap;
			int tem = inputList[i];
			while (j >= 0 && inputList[j] > tem) {
				inputList[j+gap]=inputList[j];
				j-=gap;
			}
			inputList[j+gap]=tem;
		}
		gap /= 2;
	}
	return inputList;
}

 

你可能感兴趣的:(算法)