8种Java排序算法总结2(ZZ)

4、 希尔排序

希尔排序并不稳定,O(1)的额外空间,时间复杂度为O(N*(logN)^2)。这中算法是基于插入排序的。最坏的情况下的执行效率和在平均情况下的执行效率相比相差不多。

 
  public void shellSort(){

       int inner, outer;

       long temp;

       

       int h=1;

       while(h<nElems/3){

           h=h*3+1;

       }//Knuth序列初始化

       while(h>0){

           for(outer=h;outer<nElems;outer++){

              temp = theArray[outer];

              inner = outer;

              while((inner>h-1)&&theArray[inner-h]>=temp){

                  theArray[inner]=theArray[inner];

                  inner-=h;

              }

              theArray[inner]=temp;

           }

           h=(h-1)/3;

       }

   }

你可能感兴趣的:(java,算法)