public static void sort(long[] arr){
int h = 1; // 初始化间隔
// 计算最大间隔
while(h < arr.length / 3){
h = 3 * h + 1;
}
while(h > 0){
long temp = 0;
for(int i = h; i < arr.length; i++){
temp = arr[i]; // temp等于数组第i个元素的值
int j = i;
while(j > h - 1 && arr[j - h] > temp){
arr[j] = arr[j - h];
j-=h;
}
arr[j] = temp;
}
// 下一个h值
h = (h - 1) / 3;
}
}
疑问:while(j > h - 1 && arr[j - h] > temp) 这行代码,j > h - 1; 不懂为啥 j > 0 会出现数组越界异常,而 j > h - 1 就不会。
@奔跑如风 ,能帮忙看看吗?谢谢~
添加回答
举报
0/150
提交
取消