用java实现Shell Sort

 

package sort;

 

public class ShellSort{

 

     private int[] gap;

 

     public void initGap(){

         gap = new int[3];

         gap[0] = 3;

         gap[1] = 2;

         gap[2] = 1;

     }

 

     public void sort(int[] data) {

         initGap(); // 初始化增量数组

      

         for (int s = 0; s<gap.length; s++) {

             int d = gap[s]; // 得到每次增量大小

      

             // 在当前增量d下对每个“隐形子序列”进行插入排序

             for (int i=d; i<data.length; i++) {

      

                 if (data[i] < data[i-d]) {// 需要调整

                     int tmp = data[i];

      

                     int j;

                     for (j = i-d; j>=0 && tmp<data[j]; j-=d) // 插入排序实现

                         data[j+d] = data[j];

                     data[j+d] = tmp;

                 }

             }

          }

     }

 

 

     /**

      * 测试

      * @param args

      */

     public static void main(String args[]) {

         ShellSort test = new ShellSort();

         int[] data = {70,23,40,10,80,20,90,100,75,60,45};

         test.sort(data);

      

         for (int i=0; i<data.length; i++)

             System.out.print(data[i]+", ");

      

     }

 

}

 


版权声明:本文为bonniexb原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。