希尔排序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

相关文章
相关标签/搜索