希尔排序是对直接插入排序的优化,比直接插入排序效率更快
1 public class ShellSort { 2 3 public static void main(String[] args) { 4 int[] arr=new int[]{3,5,2,8,4,10,2,1,18,11}; 5 System.out.println(Arrays.toString(arr)); 6 shellSort(arr); 7 System.out.println(Arrays.toString(arr)); 8 } 9 10 public static void shellSort(int[] arr){ 11 //遍历所有的步长 12 for(int d=arr.length/2;d>0;d/=2){ 13 //遍历所有元素 14 for(int i=d;i<arr.length;i++){ 15 //遍历本组中元素 16 for(int j=i-d;j>=0;j-=d){ 17 //如果当前元素大于加上步长后的那个元素 18 if(arr[j]>arr[j+d]){ 19 int temp=arr[j]; 20 arr[j]=arr[j+d]; 21 arr[j+d]=temp; 22 } 23 } 24 } 25 } 26 } 27 }