package cn.xiaobo.ShellOrder;html
public class ShellApp {java
public void sort(int[] arr) {
for(int gap=arr.length/2;gap>0;gap/=2){
//对进行的分组进行插入排序,建议熟悉插入排序再来理解
for(int i=gap;i<arr.length;i+=gap){
//后面的操做会改变i须要先存储i;
int j=i;
int temp=arr[j];
if(arr[j]<arr[j-gap]){
//插入排序的具体操做,每次都跟左边的数据比较
//(由于已经分好组了,因此arr[j-gap]与arr[j]是最近的),而后移动
//最后将temp插入到不知足的那项;
while(j-gap>=0&&temp<arr[j-gap]){
arr[j]=arr[j-gap];
j-=gap;
}
arr[j]=temp;
}
}
}
}
}shell
package cn.xiaobo.ShellOrder;spa
public class ShellMain {
public static void main(String[] args) {
ShellApp shellApp=new ShellApp();
int arr[]={2,3,43,6,7,8,23,12,34,78};
shellApp.sort(arr);
for(int i=0;i<arr.length;i++){
System.out.println("arr "+i+"is : "+arr[i]);
}
}
}htm