希尔排序:
时间复杂度:O(n^(1.3—2))
空间复杂度:O(1),原地排序算法
稳定性:不是稳定的排序算法。
相关介绍感觉百度百科介绍挺好的。见:https://baike.baidu.com/item/%E5%B8%8C%E5%B0%94%E6%8E%92%E5%BA%8F/3229428?fr=aladdin
package cm.com.algorithm;
/**
* 希尔排序
* 核心思想:
* 核心还是利用插入排序,只不过是将插入排序做了分段。
* 原则上是属于插入排序的一种改进。
*
* @author liushuai13@meicai.cn
* @date 2019-06-06 12:37
*/
public class ShellsSort {
private static int[] intArray = {9,7,5,3,6,5,8,9,5,4};
public static void main(String[] args) {
sort();
printArray();
}
/**
* 对数组排序
*/
public static void sort(){
for (int i = intArray.length / 2; i >= 1; i = i / 2) {
for (int j = 0; j < i; j++) {
// 插入排序
for (int k = j + i; k < intArray.length; k = k + i) {
int minValue = intArray[k];
int m = k - i;
for (; m >= 0 && intArray[m] > minValue; m = m - i) {
intArray[m + i] = intArray[m];
}
intArray[m + i] = minValue;
}
}
}
}
/**
* 打印数组
*/
public static void printArray(){
for (int i = 0; i < intArray.length; i++) {
if ( i < intArray.length - 1 ){
System.out.print(intArray[i]+",");
continue;
}
System.out.println(intArray[i]);
}
}
}