public class Shell { public static void sort(Comparable[] a){ int N=a.length; int h=1; while (h<N/3) h=3*h+1; while (h>=1){ 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/=3; } } private static boolean less(Comparable v,Comparable w){ return v.compareTo(w)<0; } private static void exch(Comparable[] a,int i,int j){ Comparable t=a[i];a[i]=a[j];a[j]=t; } public static boolean isSorted(Comparable[] a){ for (int i = 0; i <a.length ; i++) { if(less(a[i],a[i])) return false; } return true; } public static void main(String[] args){ String[] a=In.readStrings(); sort(a); }
希尔排序
最新推荐文章于 2025-01-21 00:21:24 发布