核心思想(个人理解):首先我们用一个固定长度的增量作为比较的间距 gap (一般我们是用 数组的长度 / 2,每次对折 ),停止条件是 gap > 0,然后用两个循环,第一个循环从中间往后面走(int i = gap; i < length;i++,),第二个循环是 j = i -gap;j >= 0;j = j - gap;
代码:
public static void shellSort(int[] arr){
int gap = arr.length;
while (gap>0){
gap /= 2;
int temp = 0;
int j = 0;
for (int i = gap; i < arr.length; i++) {
temp = arr[i];
for (j = i - gap; j >= 0 ; j = j - gap) {
if (temp < arr[j]){
arr[j + gap] = arr[j];
}else {
break;
}
}
arr[j + gap] = temp;
}
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交