希尔排序
public class ShellSort {
public static void main(String[] args) {
int [] arr= {9,6,11,3,5,12,8,7,10,15,14,4,1,13,2};
sort(arr);
print(arr);
}
private static void sort(int[] arr) {
int h=1;
while(h<=arr.length/3){
h=h*3+1;
}
for (int gap = h; gap >0; gap/=2) {
for (int i = gap; i < arr.length; i++) {
for (int j = i; j >gap-1 ; j-=gap) {
if(arr[j]<arr[j-gap]){
swap(arr,j,j-gap);
}
}
}
}
}
static void print(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
static void swap(int [] arr,int i, int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
面试不易被问到,锻炼思维