ITPub博客

首页 > 应用开发 > Java > 希尔排序

希尔排序

原创 Java 作者:壹頁書 时间:2016-09-05 14:16:33 0 删除 编辑


  1. public class Sort{
  2.     public static void main(String[] args){
  3.         Integer[] data={3,2,9,8,7,10};
  4.         BaseSort s=new Shell();

  5.         s.sort(data);

  6.         System.out.println(s.isSorted(data));
  7.     }


  8. }

  9. //希尔排序
  10. class Shell extends BaseSort{

  11.     @Override
  12.     void sort(Comparable[] data) {
  13.         int length=data.length;
  14.         int h=1;
  15.         while(h<length/3){
  16.             h=3*h+1; //1,4,13,40,121..
  17.         }
  18.         while(h>=1){
  19.             for(int i=h;i<length;i++){
  20.                 for(int j=i;j>=h&&less(data[j],data[j-h]);j-=h){
  21.                     exch(data,j,j-h);
  22.                 }
  23.             }

  24.             h=h/3;
  25.         }
  26.     }
  27. }

  28. abstract class BaseSort {
  29.     abstract void sort(Comparable[] data);
  30.     //比较
  31.     public boolean less(Comparable v,Comparable w){
  32.         return v.compareTo(w)<0;
  33.     }

  34.     //交换
  35.     public void exch(Comparable[] data,int i,int j){
  36.         Comparable t=data[i];
  37.         data[i]=data[j];
  38.         data[j]=t;
  39.     }

  40.     //打印
  41.     public void show(Comparable[] data){
  42.         for(int i=0;i<data.length;i++){
  43.             System.out.print(data[i]+" ");
  44.         }
  45.         System.out.println("");
  46.     }

  47.     //验证
  48.     public boolean isSorted(Comparable[] data){
  49.         for(int i=1;i< data.length;i++){
  50.             if(less(data[i],data[i-1]) )
  51.                 return false;
  52.         }
  53.         return true;
  54.     }
  55. }






参考:
http://blog.csdn.net/morewindows/article/details/6668714
http://www.cnblogs.com/jingmoxukong/p/4303279.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-2124501/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: MySQL内存使用
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    620
  • 访问量
    6339962