news 2026/6/9 22:25:36

简单堆和桶排序(自用)

作者头像

张小明

前端开发工程师

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/6/9 22:08:50

SpringBoot中使用Spring Data Elasticsearch超详细版教程

SpringBoot 中整合 Elasticsearch 的实战指南&#xff1a;从零搭建高效搜索服务最近在开发一个电商商品搜索功能时&#xff0c;团队遇到了传统数据库LIKE查询响应慢、多字段组合检索性能差的问题。经过技术选型&#xff0c;我们决定引入Elasticsearch来解决全文检索瓶颈&#x…

作者头像 李华
网站建设 2026/6/6 7:09:19

条码识别技术scanner原理详解:全面讲解其工作机制

条码识别如何在毫秒间“看懂”黑白条纹&#xff1f;揭秘扫描器背后的技术逻辑你有没有想过&#xff0c;超市收银员轻轻一扫&#xff0c;商品价格就跳了出来——这背后究竟发生了什么&#xff1f;看似简单的“滴”一声&#xff0c;其实是一场精密的光电协作、信号处理与算法解码…

作者头像 李华
网站建设 2026/6/6 7:59:46

Qwen2.5-0.5B功能测评:小模型如何实现大语言能力

Qwen2.5-0.5B功能测评&#xff1a;小模型如何实现大语言能力 1. 引言 随着大语言模型&#xff08;LLM&#xff09;在自然语言处理领域的广泛应用&#xff0c;业界对模型性能与部署成本之间的平衡提出了更高要求。尽管千亿参数级别的模型在生成质量上表现出色&#xff0c;但其…

作者头像 李华
网站建设 2026/6/9 18:40:44

远程固件升级服务入门指南:新手必看的完整操作教程!

随着物联网与智能设备的快速发展&#xff0c;远程固件升级&#xff08;FOTA&#xff09;已成为设备维护与功能迭代的核心手段。对于刚接触该技术的新手而言&#xff0c;如何安全、高效地完成远程固件升级可能充满挑战。本文将从基础概念讲起&#xff0c;一步步带你掌握远程固件…

作者头像 李华
网站建设 2026/6/9 21:08:40

Qwen3-4B-Instruct-2507测试用例:自动生成与优化

Qwen3-4B-Instruct-2507测试用例&#xff1a;自动生成与优化 1. 引言 随着大模型向端侧部署的持续演进&#xff0c;轻量化、高性能的小参数模型成为AI落地的关键突破口。通义千问 3-4B-Instruct-2507&#xff08;Qwen3-4B-Instruct-2507&#xff09;是阿里于2025年8月开源的一…

作者头像 李华
网站建设 2026/6/9 17:19:14

YOLOFuse避坑指南:单模态用户迁移注意事项说明

YOLOFuse避坑指南&#xff1a;单模态用户迁移注意事项说明 1. 引言 随着多模态感知在自动驾驶、安防监控和夜间检测等场景中的广泛应用&#xff0c;基于RGB与红外&#xff08;IR&#xff09;图像融合的目标检测技术正成为研究与工程落地的热点。YOLOFuse 是一个专为双流多模态…

作者头像 李华