public static void shellSort(int[] arr, int i) {
//定义退出界限,当间隔等于0的时候就返回
if (i == 0)
return;
//定义当前数组左边界
int left = 0;
//当数组的左边界加上间隔值不越界的时候,进行下面的循环。
while (left + i < arr.length) {
//插入排序
for(int m=left;m<left+i;m++){
for(int n=m+1;n>left;n--){
if(arr[n]<arr[n-1]){
int temp=arr[n];
arr[n]=arr[n-1];
arr[n-1]=temp;
}
else{
break;
}
}
}
//左边界加一,继续循环
left++;
}
//进行下一个增量的排序
shellSort(arr,i/2);
}