A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。



  1. publicclass shellSort {

  2. publicshellSort(){

  3.     int a[]={1,54,6,3,78,34,12,45,56,100};
  4.     double d1=a.length;
  5.     int temp=0;

  6.     while(true){
  7.        d1= Math.ceil(d1/2);
  8.        int d=(int) d1;
  9.        for(int x=0;x<d;x++){

  10.            for(int i=x+d;i<a.length;i+=d){
  11.               int j=i-d;
  12.               temp=a[i];
  13.               for(;j>=0&&temp<a[j];j-=d){
  14.                    a[j+d]=a[j];
  15.               }
  16.               a[j+d]=temp;
  17.            }
  18.        }

  19.        if(d==1){
  20.            break;
  21.        }

  22.     for(int i=0;i<a.length;i++){
  23.        System.out.println(a[i]);
  24.     }
  25. }
复制代码


1347009104_7238.jpg (85.64 KB, 下载次数: 0)

1347009104_7238.jpg

1347009104_7238.jpg (85.64 KB, 下载次数: 0)

1347009104_7238.jpg

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马