import java.util.Arrays;
//希尔排序
public class Shell {
private final static int LEN = 3;
private Shell(){}
private static boolean less(Comparable a, Comparable b){
return a.compareTo(b) < 0;
}
private static void exch(Object[] a, int i, int j){
Object temp = a[i];
a[i] = a[j];
a[j] = temp;
}
public static void sort(Comparable[] a){
int h = 1;
int n = a.length;
while(h < n / LEN) //条件,防止size * LEN + 1 超过下标
h = h * LEN + 1;
while(h > 0){
for (int i = h; i < n; i++){
for (int j = i; j >= h && less(a[j],a[j - h]); j -= h){
exch(a, j, j-h);
}
}
h /= LEN;
}
}
public static void main(String[] args) {
Comparable[] a = new Comparable[]{3,2,6,4,7,5};
sort(a);
System.out.println(Arrays.toString(a));
}
}
希尔排序&数据结构
最新推荐文章于 2024-07-20 22:08:43 发布