栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构----堆(heap)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构----堆(heap)


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、堆是什么?

堆是一种数据结构,就是每个节点根据某种规则排序, 从根节点往下都符合某种规律。

堆是一个完全二叉树,树中每个节点的值都不小于(或不大于)其左右孩子的值。 如果父节点是大于等于左右子节点就是大顶堆,小于等于左右孩子就是小顶堆。大顶堆每次先弹出最大元素,小顶堆每次弹出最小元素。

二、以里扣347题为例
思路:
1.题目要求取前k频次的数,用小顶堆把小数弹出留下的就是大数。
2.先建立hash_map存储各数频次。
3. 利用优先级队列,本质为heap。优先级队列内部元素是自动依照元素的权值排列。缺省情况下priority_queue利用大顶堆完成对元素的排序,这个大顶堆是以vector为表现形式的complete binary tree(完全二叉树)。
实现:
C++构建大小顶堆(示例):

//构造大顶堆
priority_queue,less > big_heap;   
//构造小顶堆
priority_queue,greater > small_heap;   
 
p.s.:  priority_queue< type, container, function >
      type:数据类型;
      container:实现优先队列的底层容器;
      function:元素之间的比较方式;
      用less,greater 需要 #include ,也可以自己创建函数替代。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/347093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号