希尔排序动态图:
测试代码:
package demo3;
import java.util.Arrays;
public class ShellSort {
public static void main(String[] args) {
int[] arr=new int[] {1,8,6,0,4,2,3,8,7};
shellSort(arr);
System.out.println(Arrays.toString(arr));
}
//希尔排序
public static void shellSort(int[] arr) {
//遍历所有步长
for(int d=arr.length/2;d>0;d/=2) {
//遍历所有元素
for(int i=d;i<arr.length;i++) {
//遍历本数组中所有的元素
for(int j=i-d;j>=0;j-=d) {
//如果当前元素大于加上步长后的那个元素
if(arr[j]>arr[j+d]) {
int temp=arr[j];
arr[j]=arr[j+d];
arr[j+d]=temp;
}
}
}
}
}
}