• 排序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);
        }
    }
    

      

  • 相关阅读:
    记下mongoose(转载)
    vue vue-cli中引入全局less变量的方式
    单标签不支持 伪元素
    删除tppabs,href="javascript:if(confirm)...",、/*tpa=http://...
    系统字体放大导致rem布局错乱,解决方案,已通过测试
    IE条件注释
    hbase部署经验与坑总结
    ubuntu安装mysql 5.7
    静态代理和动态代理
    单例模式
  • 原文地址:https://www.cnblogs.com/maohuidong/p/14179477.html
Copyright © 2020-2023  润新知