稳定性:不稳定
时间复杂度:O(N^13~N^17)
空间复杂度:O(1)
由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell排序是不稳定的。


java
public static void main(String[] args) {
int[] array = {31,432,1,53,75,36,21,26,622,66,71 57};
int gap = array.length;// 确定组数
while(gap > 1) { // 当gap为1时,说明已经排序好了
for(int i = gap; i < array.length; i++) {
int j = i - gap;//分组
while(j >= 0) {
int tmp = array[i]
if(array[i] < array[j]) { //交换
array[j + gap] = array[j];
array[j] = tmp;
j -= gap;
}else {
break;//如果j+1元素比j大,说明j前面的元素已经都是有序的了
}
}
}
}
}