-
public class Sort{
-
public static void main(String[] args){
-
Integer[] data={3,2,9,8,7,10};
-
BaseSort s=new Shell();
-
-
s.sort(data);
-
-
System.out.println(s.isSorted(data));
-
}
-
-
-
}
-
-
//希尔排序
-
class Shell extends BaseSort{
-
-
@Override
-
void sort(Comparable[] data) {
-
int length=data.length;
-
int h=1;
-
while(h<length/3){
-
h=3*h+1; //1,4,13,40,121..
-
}
-
while(h>=1){
-
for(int i=h;i<length;i++){
-
for(int j=i;j>=h&&less(data[j],data[j-h]);j-=h){
-
exch(data,j,j-h);
-
}
-
}
-
-
h=h/3;
-
}
-
}
-
}
-
-
abstract class BaseSort {
-
abstract void sort(Comparable[] data);
-
//比较
-
public boolean less(Comparable v,Comparable w){
-
return v.compareTo(w)<0;
-
}
-
-
//交换
-
public void exch(Comparable[] data,int i,int j){
-
Comparable t=data[i];
-
data[i]=data[j];
-
data[j]=t;
-
}
-
-
//打印
-
public void show(Comparable[] data){
-
for(int i=0;i<data.length;i++){
-
System.out.print(data[i]+" ");
-
}
-
System.out.println("");
-
}
-
-
//验证
-
public boolean isSorted(Comparable[] data){
-
for(int i=1;i< data.length;i++){
-
if(less(data[i],data[i-1]) )
-
return false;
-
}
-
return true;
-
}
-
}
参考:
http://blog.csdn.net/morewindows/article/details/6668714
http://www.cnblogs.com/jingmoxukong/p/4303279.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-2124501/
,如需转载,请注明出处,否则将追究法律责任。