zoukankan      html  css  js  c++  java
  • 堆排序

     /**
         * 首先将无序序列构建成大顶堆或小顶对(父节点大于等于左右字节点的值)
         * arr[i]>=arr[2i+1] && arr[i]>=arr[2i+2]
         * 交换堆顶和末尾元素的值,重新调整堆结构
         * 交换数据,重复上面的步骤
         *
         * 第一个非叶子节点时(arr.length/2)-1
         *
         *
         */
        @Test
        public void headSort(){
            int[] array = {1,4,5,6,9,0,4,3,4,5};
            headSort(array);
            System.out.println(Arrays.toString(array));
    
    
        }
    
        public void headSort(int[] array){
            //构建大堆顶
            for (int i=(array.length)/2-1;i>=0;i--){
                //从第一个非叶子节点开始,从左到右,从下到上
                ajustHead(array,i,array.length);
            }
    
            for (int j=array.length-1;j>0;j--){
                swap(array,0,j);
                ajustHead(array,0,j);
            }
    
        }
    
        public void ajustHead(int[] array,int i,int length){
            int tem=array[i];
            for (int k=i*2+1;k<length;k=k*2+1){
                if(k+1<length && array[k]<array[k+1]){//左右子树比较
                    k++;
                }
                if(array[k]>tem){
                    array[i]=array[k];
                    i=k;
                }else{
                    break;
                }
    
            }
            array[i]=tem;
        }
    
        public void swap(int[] array ,int a,int b){
            int temp=array[a];
            array[a]=array[b];
            array[b]=temp;
    
        }
    View Code

    堆排序实践

  • 相关阅读:
    centos安装pip
    centos修改国内镜像源
    centos配置snmp服务
    django使用ModelForm上传文件
    Vue slot
    umi3.2+ targets ie不生效的问题
    mongo环境快速搭建工具 mlaunch
    mac上常用软件
    磁盘性能测试工具 iozone
    磁盘性能测试工具 bonnie++
  • 原文地址:https://www.cnblogs.com/nihaofenghao/p/9093150.html
Copyright © 2011-2022 走看看