Shell Sort based on insert sort

Posted 空山皓月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell Sort based on insert sort相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 451. Sort Characters By Frequency JAVA语言

Spark-1.6.0中的Sort Based Shuffle源码解读

Array.Sort 谷歌内核 数组大小超过10 排序字段都一致 返回的数组非原数组

Radix Sort base 256 性能

Shell编程字符处理命令sort和wc

linux shell sort指令(sort命令)排序