zoukankan      html  css  js  c++  java
  • 排序4:希尔排序

    /**
     * @desc: 希尔排序
     * @author: 毛会懂
     * @create: 2020-12-23 14:21:00
     **/
    public class Shell {
    
        public static void sort(Comparable[] arr){
            int n = arr.length;
            int h = 1; //根据数组a的长度,确定增长量h的初始值
            while (h < (n >>>1)){  //n >>>1  等价于  n / 2
                h =  h << 1 + 1; // h = h * 2 + 1
            }
    
            while (h >=1){//控制 增量变化 重新排序的次数
                //插入排序(第一组的第二个元素,对应第h个元素,第二组的第二个元素,对应第h+1个元素)
                for(int i = h;i < n;i++){
                    //插入排序
                    for(int j = i;j >= h;j-=h){
                        if(isExchange(arr[j-h],arr[j])){
                            exchange(arr,j-h,j);
                        }else{
                            break;
                        }
                    }
                }
                h = h >>> 1; // h = h / 2
            }
        }
    
        private static Boolean isExchange(Comparable o1,Comparable o2){
            return o1.compareTo(o2) > 0;
        }
    
        private static void exchange(Comparable[] arr,int i,int j){
            Comparable temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
    
    //希尔排序
    public static void main(String[] args) {
        Integer[] arr = {10,8,20,30,5,7,4,12,40,30,1,2,4,3,100,5,32,45,23,66,45,7,55,79,6};
        Shell.sort(arr);
        Arrays.asList(arr).forEach(System.out::println);
    
        Person[] persions = {new Person("b",11),new Person("a",10),new Person("c",12),new Person("b",111),
                new Person("a",5),new Person("c",4)};
        Insertion.sort(persions);
        for (Person person : persions) {
            System.out.println(person);
        }
    }
    

      

  • 相关阅读:
    Spring整合CXF之添加拦截器
    Spring整合CXF之发布WebService服务
    CXF添加自定义拦截器
    cxf处理一些Map等复杂类型
    webservice执行过程深入理解
    谈谈房车
    关于贷款消费
    记一次玩比特币的经历
    那年K城暑期工
    SpringBoot整合Xxl-Job
  • 原文地址:https://www.cnblogs.com/maohuidong/p/14179477.html
Copyright © 2011-2022 走看看