news 2026/4/23 11:07:09

简单堆和桶排序(自用)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
简单堆和桶排序(自用)

一、 堆: 了解下就好


(1)堆是完全二叉树的结构
什么是完全二叉树:

1.只允许最后一行不满

2.最后一行必须从左往右排,中间不能有间隔


(2)堆序性

1.小根堆,父节点都要更小

2.大根堆,父节点都要更大


(3)堆的存储,因为是完全二叉树,所以可以根据层序遍历,来得到一个数组,此时,父节点为i时,左右子节点一定为2i+1/2


(4)堆有两个基本操作:

1.上滤,通常用于插入新元素到根中时,向上调整位置时
2.下滤(因为必须要满足堆序性的话,所以对不满足的要操作),把根节点向下调整的操作叫下滤


(5)自顶向下建堆法:

1.插入堆

2.上滤


(6)自下而上建堆法:

对每个父节点进行下滤(从最下面的父节点开始)--复杂度O(N)
(7)应用

1.优先队列:弹出最小元素--可以用来实现堆排序,用大根堆排序完,弹出的是正序,小根堆反

2.插入:就是上滤


java中常见写法

最大堆:(Lamda)

PriorityQueue<Integer> maxHeap = new PriorityQueue<>((a, b) -> b - a);

最小堆:

一般直接这么写就行

PriorityQueue<Integer> small_stack = new PriorityQueue<>();

lamda

二、桶排序

例题:前K个高频元素

class Solution { public int[] topKFrequent(int[] nums, int k) { // 第一步:统计每个元素的出现次数 Map<Integer, Integer> cnt = new HashMap<>(); for (int x : nums) { cnt.merge(x, 1, Integer::sum); // cnt[x]++ } int maxCnt = Collections.max(cnt.values()); // 第二步:把出现次数相同的元素,放到同一个桶中 List<Integer>[] buckets = new ArrayList[maxCnt + 1]; Arrays.setAll(buckets, _ -> new ArrayList<>()); for (Map.Entry<Integer, Integer> e : cnt.entrySet()) { buckets[e.getValue()].add(e.getKey()); } // 第三步:倒序遍历 buckets,把出现次数前 k 大的元素加入答案 int[] ans = new int[k]; int j = 0; for (int i = maxCnt; i >= 0 && j < k; i--) { // 注意题目保证答案唯一,一定会出现某次循环结束后 j 恰好等于 k 的情况 for (int x : buckets[i]) { ans[j++] = x; } } return ans; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 21:38:32

基于libfota2的第三方服务器远程固件升级完整指南!

在物联网设备日益普及的今天&#xff0c;远程固件升级&#xff08;FOTA&#xff09;已成为设备维护与功能迭代的核心能力。本文将详细介绍如何借助开源扩展库libfota2&#xff0c;在自建第三方服务器环境下&#xff0c;实现安全、稳定的远程固件升级服务。从环境搭建、固件打包…

作者头像 李华
网站建设 2026/4/23 10:44:05

Multisim示波器使用技巧:从零实现信号观测

从零开始玩转Multisim示波器&#xff1a;手把手教你精准观测电路信号你有没有过这样的经历&#xff1f;在仿真一个放大电路时&#xff0c;明明参数都设好了&#xff0c;可输出波形就是“抽风”——抖动、漂移、甚至根本看不到稳定图像。这时候&#xff0c;问题往往不在于电路设…

作者头像 李华
网站建设 2026/4/18 1:54:19

AI绘画太随机?用麦橘超然+seed实现稳定输出

AI绘画太随机&#xff1f;用麦橘超然seed实现稳定输出 1. 引言&#xff1a;AI绘画的“不可控”困境与破局之道 在当前AI图像生成技术快速发展的背景下&#xff0c;用户对生成结果的质量和可控性提出了更高要求。尽管现代扩散模型如Flux.1具备强大的创意表达能力&#xff0c;但…

作者头像 李华
网站建设 2026/3/28 4:37:19

为什么Qwen3-Embedding-4B部署慢?vLLM优化实战教程揭秘

为什么Qwen3-Embedding-4B部署慢&#xff1f;vLLM优化实战教程揭秘 1. 引言&#xff1a;文本向量化的新标杆与性能瓶颈 通义千问3-Embedding-4B是阿里云Qwen3系列中专为高精度文本向量化设计的双塔模型&#xff0c;参数量达40亿&#xff0c;在MTEB、CMTEB等主流评测榜单上表现…

作者头像 李华
网站建设 2026/4/16 18:20:20

YOLOv9实战应用:工业缺陷检测系统的构建与部署流程

YOLOv9实战应用&#xff1a;工业缺陷检测系统的构建与部署流程 1. 背景与挑战 在现代智能制造体系中&#xff0c;产品质量控制是保障生产效率和客户满意度的关键环节。传统的人工视觉检测方式存在效率低、主观性强、易疲劳等问题&#xff0c;难以满足高节拍、高精度的工业场景…

作者头像 李华
网站建设 2026/4/18 14:57:22

FSMN VAD静音过滤算法深度解析:基于能量与频谱特征的决策机制

FSMN VAD静音过滤算法深度解析&#xff1a;基于能量与频谱特征的决策机制 1. 技术背景与核心问题 语音活动检测&#xff08;Voice Activity Detection, VAD&#xff09;是语音信号处理中的基础模块&#xff0c;广泛应用于语音识别、语音增强、会议转录和音频压缩等场景。其核…

作者头像 李华