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 23:50:45

Qwen3-0.6B与LangChain集成:streaming输出实测

Qwen3-0.6B与LangChain集成&#xff1a;streaming输出实测 1. 引言&#xff1a;流式输出在大模型应用中的价值 随着大语言模型&#xff08;LLM&#xff09;在对话系统、智能助手和自动化内容生成等场景的广泛应用&#xff0c;用户对响应体验的要求日益提升。传统的“等待完整…

作者头像 李华
网站建设 2026/6/10 11:27:41

通义千问3-4B镜像更新日志:2507版本新特性部署解读

通义千问3-4B-Instruct-2507镜像更新日志&#xff1a;2507版本新特性部署解读 1. 引言 随着边缘计算与端侧AI的快速发展&#xff0c;轻量级大模型正成为构建本地化智能应用的核心基础设施。2025年8月&#xff0c;阿里开源了通义千问系列中的新一代小参数模型——Qwen3-4B-Ins…

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

Qwen3-VL-2B实战教程:医学影像报告自动生成系统

Qwen3-VL-2B实战教程&#xff1a;医学影像报告自动生成系统 1. 引言 1.1 医学影像报告生成的行业痛点 在现代医疗体系中&#xff0c;放射科医生每天需要处理大量的CT、MRI、X光等医学影像。一份高质量的影像报告通常需要医生结合病灶位置、形态、大小、密度变化以及临床背景…

作者头像 李华
网站建设 2026/6/1 1:52:05

避坑指南:Qwen2.5-0.5B极速对话机器人部署常见问题解答

避坑指南&#xff1a;Qwen2.5-0.5B极速对话机器人部署常见问题解答 1. 引言 随着边缘计算和轻量化AI应用的快速发展&#xff0c;如何在资源受限的环境中高效部署大语言模型成为开发者关注的重点。基于阿里云通义千问团队发布的 Qwen/Qwen2.5-0.5B-Instruct 模型构建的“极速对…

作者头像 李华
网站建设 2026/6/10 11:36:20

TensorFlow-v2.9实操手册:模型冷启动问题解决方案汇总

TensorFlow-v2.9实操手册&#xff1a;模型冷启动问题解决方案汇总 1. 背景与问题定义 在深度学习项目开发过程中&#xff0c;模型冷启动问题是常见且影响深远的技术挑战。所谓“冷启动”&#xff0c;指的是模型在首次部署或长时间停机后重启时&#xff0c;因缺乏预热、缓存未…

作者头像 李华
网站建设 2026/6/10 10:56:17

VibeThinker-1.5B-WEBUI部署教程:Jupyter一键启动全攻略

VibeThinker-1.5B-WEBUI部署教程&#xff1a;Jupyter一键启动全攻略 1. 简介与技术背景 VibeThinker-1.5B 是由微博开源的一款轻量级密集型语言模型&#xff0c;参数规模为15亿&#xff08;1.5B&#xff09;&#xff0c;专为数学推理与编程任务设计。尽管其参数量相对较小&…

作者头像 李华