package cyz;
import java.util.Arrays;
public class Shell_sort {
/**
- 假如有5个数为5,8,9,7,1
- intd=5/2=2(int类型)
- 所以当步长为2时
- 这时候5,9,1进行排序为1,5,9
- 8,7进行排序7,8
- 因此得到1,7,5,8,9
- 当d/2=1时(因为之前的步长为2)
- 进行的是对1,7,5,8,9排序
- 1,5,7,8,9
- 希尔排序的原理
- @author cyz
*/
public static void main(String[] args){
int[] arr=new int []{5,8,9,7,1};
System.out.println(Arrays.toString(arr));
shellSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void shellSort(int[] arr){
int k=1;
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;
}
}
}
}
}
}