首页 > 编程语言 >蒜法笔记(Java)- 堆排序

蒜法笔记(Java)- 堆排序

时间:2024-08-15 15:26:07浏览次数:14  
标签:arr 蒜法 Java temp int 堆排序 start 二叉树 public

逻辑

        是一种所有父节点都大于等于(大根堆)或小于等于(小根堆)其子节点的完全二叉树。堆排序(升序)就是一种将数组视为一个完全二叉树,将其变为一个大根堆后将堆顶放到数组尾重复n次后数组有序的排列方法,时间复杂度为O(nlogn)。(感觉好像冒泡哦)

        简述:将数组视为完全二叉树,将其变为将堆顶置底,重复n次。


代码

import java.util.Arrays;

public class HeapSort {
    public static void main(String[] args) {
        int arr[] = {4, 6, 8, 5, 9 , 7, 1, 3, 2};
        heapSort(arr);
        System.out.println(Arrays.toString(arr));
    }
    public static void heapSort(int arr[]){
        for(int i = arr.length/2-1;i>=0;i--){
            heapAdjust(arr,i,arr.length);
        }
        int temp;
        for(int i = arr.length-1;i>0;i--){
            temp = arr[0];
            arr[0] = arr[i];
            arr[i] = temp;
            heapAdjust(arr,0,i);
        }
    }
    public static void heapAdjust(int arr[], int start, int end){
        int temp = arr[start];
        for(int i = start * 2 + 1;i < end;i = i * 2 + 1){
            if (i+1 < end && arr[i] < arr[i+1]) i++;
            if (temp < arr[i]){
                arr[start] = arr[i];
                start = i;
            }else break;
        }
        arr[start] = temp;
    }
}

标签:arr,蒜法,Java,temp,int,堆排序,start,二叉树,public
From: https://blog.csdn.net/fanqieyuu/article/details/141222853

相关文章

  • 使用Docker将Java项目打包并部署到CentOS服务器的详细教程。
    当然,让我们将上述步骤进一步细化,以便更好地理解整个过程。前提条件一个Java项目CentOS服务器,并且已安装DockerJava项目可以正常在本地运行具有服务器访问权限————————————————————————————————————————————步骤1:准备Jav......
  • JavaScript实现数组与树结构的相互转换
    1、将树结构数据转换为数组(按照树结构自上而下的顺序转换)树结构:树结构数据样例:代码转换://将树结构数据转换为数组treeNodes为树结构形式的数据functiontreeToArray(treeNodes){letresult=[];//递归函数traverse,用于处理单个节点functiontraverse(node......
  • 计算机毕业设计推荐-基于Java的校园交友网站
    ......
  • Java面试题学习(Spring & SpringBoot)
    1.Java基础2.Spring&SpringBoot(正在浏览)目录一、Spring1.谈谈你对Spring的理解?/什么是Spring?2.Spring有什么特点?3.Spring框架中都用到了哪些设计模式?二、SpringIOC4.什么是SpringIOC?什么是SpringIOC容器?有什么作用?5.SpringIOC的实现机制是什么?6.什么是S......
  • JAVA面试题大全(600+道题目)
    1.想要线程安全的HashMap怎么办?(1)使用ConcurrentHashMap(2)使用HashTable(3)Collections.synchronizedHashMap()方法2.ConcurrentHashMap原如何保证的线程安全?JDK1.7:使用分段锁,将一个Map分为了16个段,每个段都是一个小的hashmap,每次操作只对其中一个段加锁JDK1.8:采用CAS+Sync......
  • JAVA8 stream 流 vs JDFrame (转)
    转自: https://juejin.cn/post/7356652717392740404个人开源框架矩阵百万级任务重试框架Fast-Retrystream流太难用了看看JDFramespring-smart-di动态切换实现类框架UniHttp第三方接口对接框架0、简介由于经常记不住stream的一些API每次要复制来复制去并且又长又臭,想要更......
  • Java、python、php版的宠物美容预约服务系统的设计与实现 (源码、调试、LW、开题、PPT)
    ......
  • Java IO、异常处理
    JavaIOJava.io包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。一、读取控......
  • 身份证OCR识别接口如何用Java调用
    一、什么是身份证OCR识别接口?身份证OCR识别接口又叫身份证识别,身份证图像识别,身份证文字识别,即自动识别和提取身份证上的文字和数字信息。它可以通过图像处理和模式识别算法,将身份证中的姓名、性别、民族、出生日期、住址、身份证号、签发机关、有效期限等关键信息准确地提取......
  • 基于Java Springboot音乐播放器系统
    一、作品包含源码+数据库+设计文档万字+PPT+全套环境和工具资源+部署教程二、项目技术前端技术:Html、Css、Js、Vue、Element-ui数据库:MySQL后端技术:Java、SpringBoot、MyBatis三、运行环境开发工具:IDEA/eclipse数据库:MySQL5.7数据库管理工具:Navicat10以上版本环境......