希尔排序
排序方法:
分组 `gap= array.length/2`每隔gap的元素为一组,然后进行插入排序!
分析
1.首先gap不断更新分组,所以有一个for循环
for (int gap=array.length/2;gap>0;gap/=2){
}
:2.每一组都要进行插入排序,所以有几个组就排序几次,所以for循环,gap越来越小,元素之间间隔越来越小,组数增加,排序次数越来越多。
- 所以gap等于5时,执行
array.length
-gap次即10-5=5次
gap等于1时,执行arrray.length
-1次即10-1等于9次
for (int i = gap; i < array.length; i++) {
}
3.又因为每次排序的数不一样(数组下标)也要循环,从中间往有找到i然后减去gap就得到array[j],然后就可以排序
```java
for(int j=i-gap;j>=0;j-=gap){
}