希爾排序java實現

1.希爾排序的java實現

    a.建議先理解清楚插入排序的原理再來理解;

     b.原理:將數據分紅多分,再對各分進行插入排序

     c.代碼:ShellApp

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

    d.ShellOrder

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

e.參考博客:https://www.cnblogs.com/chengxiao/p/6104371.html

相關文章
相關標籤/搜索