码迷,mamicode.com
首页 > 系统相关 > 详细

Shell Sort based on insert sort

时间:2017-03-11 13:13:18      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:forward   int   shel   sam   move   reverse   dea   length   asi   

Reason:when it comes to insert sort,the snail appears,as it just moves forward step by step or even worse.So we need some improvement.the first idea may be that we can walk forward in big strides.Shell sort do the same thing.

the basic realization(forward):

public static void shellSort(Comparable[] a){
int len=a.length;
int stepLen=len/3;
boolean flag=true;
int index=0;
while(flag){
for(int i=0;i<stepLen;++i){
for(int j=i+stepLen;j<len;j+=stepLen){
//insert sort
for(int k=j;k>0;k-=stepLen){
if(less(a[k],a[k-stepLen])){
swap(a,k,k-stepLen);
}else{
break;
}
}
}
}
stepLen/=3;
//make sure the last step length is 1
if(stepLen==0){
if(index>0){
flag=false;
}
stepLen=1;
++index;
}
}
}

the update realization(reverse):

public static void updateShellSort(Comparable[] a){
int N=a.length;
int h=1;
while(h<N/3) h=3*h+1;
while( h >= 1){
for(int i=h;i<N;++i){
for(int j=i;j>=h && less(a[j],a[j-h]);j-=h){
swap(a,j,j-h);
}
}
h=h/3;
}
}

Shell Sort based on insert sort

标签:forward   int   shel   sam   move   reverse   dea   length   asi   

原文地址:http://www.cnblogs.com/ssMellon/p/6534575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!