news 2026/6/15 21:13:14

简单堆和桶排序(自用)

作者头像

张小明

前端开发工程师

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/15 15:52:41

Hunyuan-MT-7B-WEBUI实战案例:企业级多语言客服系统搭建

Hunyuan-MT-7B-WEBUI实战案例&#xff1a;企业级多语言客服系统搭建 1. 引言 随着全球化业务的不断扩展&#xff0c;企业对多语言服务能力的需求日益增长。尤其是在跨境电商、国际客服、跨国协作等场景中&#xff0c;高效、准确的实时翻译能力已成为提升用户体验和运营效率的…

作者头像 李华
网站建设 2026/6/15 16:53:55

IndexTTS 2.0工作流:自动视频配音Pipeline搭建教程

IndexTTS 2.0工作流&#xff1a;自动视频配音Pipeline搭建教程 1. 引言 还在为找不到贴合人设的配音发愁&#xff1f;试试 B 站开源的 IndexTTS 2.0&#xff01;这款自回归零样本语音合成模型&#xff0c;支持上传人物音频与文字内容&#xff0c;一键生成匹配声线特点的音频&…

作者头像 李华
网站建设 2026/6/15 15:46:54

Voice Sculptor捏声音模型详解|指令化语音合成技术落地

Voice Sculptor捏声音模型详解&#xff5c;指令化语音合成技术落地 1. 技术背景与核心价值 近年来&#xff0c;语音合成&#xff08;Text-to-Speech, TTS&#xff09;技术经历了从传统参数化模型到端到端深度学习的演进。然而&#xff0c;大多数系统仍依赖于预设音色或少量可…

作者头像 李华
网站建设 2026/6/15 13:32:00

YOLO-v8.3 JavaScript调用:Node.js环境集成方案

YOLO-v8.3 JavaScript调用&#xff1a;Node.js环境集成方案 YOLO-v8.3 是 Ultralytics 公司在 YOLO 系列持续迭代中推出的最新优化版本&#xff0c;进一步提升了目标检测与实例分割任务的精度与推理效率。该版本不仅支持 Python 生态下的训练与部署&#xff0c;还通过 ONNX 模…

作者头像 李华
网站建设 2026/6/15 17:53:33

零基础入门verl:手把手教你部署LLM后训练框架

零基础入门verl&#xff1a;手把手教你部署LLM后训练框架 1. 引言 1.1 大型语言模型后训练的挑战 随着大语言模型&#xff08;LLMs&#xff09;在自然语言处理任务中的广泛应用&#xff0c;如何进一步提升其推理能力、对齐人类偏好以及增强特定场景下的表现&#xff0c;已成…

作者头像 李华
网站建设 2026/6/15 14:38:04

lora-scripts输出格式定制:JSON/Table/Report模板生成

lora-scripts输出格式定制&#xff1a;JSON/Table/Report模板生成 1. 章节概述 在大模型微调日益普及的今天&#xff0c;lora-scripts 作为一款开箱即用的 LoRA 训练自动化工具&#xff0c;极大降低了用户对 Stable Diffusion、LLM 等主流模型进行个性化适配的技术门槛。该工…

作者头像 李华