本文shell排序代码可能出现对于0索引位置无法排序的问题,建议加一点修改如下:
.....
int incre = arr.length;
while(true){
incre = incre / 2;
for(int k = 0; k< incre; k++){
for(int i = k + incre; i < arr.length; i++){
for(int j = i; j >= k; j -= incre){
if(j - incre >= k && arr[j] < arr[j - incre]){
int temp = arr[j];
arr[j] = arr[j - incre];
arr[j - incre] = temp;
}else
break;
}
}
}
if(incre == 1)
break;
}
......liaolan liaolan
lia***nhyy@foxmail.com
5年前 (2020-09-19)