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