当前位置: 首页 > wzjs >正文

北京专业网站建设公司哪家好站长工具seo综合查询权重

北京专业网站建设公司哪家好,站长工具seo综合查询权重,长春网站制作招聘信息,专业团队是什么意思什么是大根堆? 大根堆是一种特殊的完全二叉树,主要用于快速访问和操作集合中的最大值,是堆的一种形式; 什么是完全二叉树? 完全二叉树是指一棵二叉树中,除了最后一层外,其余层的节点数都达到…

什么是大根堆?

大根堆是一种特殊的完全二叉树,主要用于快速访问和操作集合中的最大值,是堆的一种形式;

什么是完全二叉树?

  • 完全二叉树是指一棵二叉树中,除了最后一层外,其余层的节点数都达到最大值(即满的),并且最后一层的节点都​​连续地靠左排列​​,注意如果最底层的叶子节点不满的情况下,是靠左排列才可以是完全二叉树。

下面两个是完全二叉树:

这个就不是一个完全二叉树,因为最底层的叶子节点没有连续靠左排列;

在完全二叉树的基础上,满足:

  • 每个节点的值都​​大于或等于​​其子节点的值。也就是说,对于任意节点 i,都必须大于其子节点的值,最终也就是堆的根节点(即树的顶部)始终是整个堆的最大值;

大根堆最主要的性质:

  • 根节点永远是最大值

下面就是一个大根堆的示例:

什么是小根堆?

与大根堆相比,小根堆(Min Heap)是相反的,每个节点的值小于或等于其子节点的值,根节点是最小值,其余相同。

Java提供了什么方式快速的实现大根堆和小根堆?

大根堆和小根堆都可以使用PriorityQueue(优先队列)实现;

小根堆的创建

Java中PriorityQueue默认是小根堆的方式,也就是直接创建一个PriorityQueue对象就好了,相当于创建一个小根堆;

PriorityQueue<Integer> minHeap = new PriorityQueue<>();
minHeap.offer(10);  // 插入元素
minHeap.offer(30);
minHeap.offer(20);System.out.println(minHeap.peek()); // 10(获取堆顶最小值)
System.out.println(minHeap.poll()); // 10(移除堆顶)
System.out.println(minHeap.poll()); // 20(下一个最小值)

大根堆的创建

大根堆的创建需要通过​​自定义比较器​​ (Comparator.reverseOrder())实现

// 使用比较器反转顺序
PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Comparator.reverseOrder());
maxHeap.offer(10); 
maxHeap.offer(30); 
maxHeap.offer(20);System.out.println(maxHeap.peek()); // 30(获取堆顶最大值)
System.out.println(maxHeap.poll()); // 30(移除堆顶)
System.out.println(maxHeap.poll()); // 20(下一个最大值)

自定义对象实现堆

我知道的有两种方式:


类实现 Comparable 接口:

class Person implements Comparable<Person> {int age;// 构造函数、getter/setter...@Overridepublic int compareTo(Person other) {return Integer.compare(this.age, other.age); // 默认升序(小根堆)}
}// 使用
PriorityQueue<Person> minHeap = new PriorityQueue<>();

动态传入比较器

// 大根堆(按年龄降序)
PriorityQueue<Person> maxHeap = new PriorityQueue<>((p1, p2) -> Integer.compare(p2.getAge(), p1.getAge())
);// 等价于
PriorityQueue<Person> maxHeap = new PriorityQueue<>(Comparator.comparingInt(Person::getAge).reversed());

算法训练的使用

比如239. 滑动窗口最大值 - 力扣(LeetCode),在连续操作最大值和最小值的情况下很好用;

http://www.dtcms.com/wzjs/299175.html

相关文章:

  • 常州 微网站百度网盘下载官网
  • 做汽车租赁主要的网站seo网站排名推广
  • 网站开发实施步骤和说明app注册推广平台
  • 做视频网站要什么seo关键词排名网络公司
  • 做家电维修网站千锋教育学费
  • 做seo 教你如何选择网站关键词seo网站推广免费
  • 专业网站制作公司排行广点通投放平台登录
  • 汝州建设局网站电脑零基础培训学校
  • 网站建设可以一次性进损益吗网站建设的推广渠道
  • 网站建设教学视频公司网址有哪些
  • 用asp做旅游网站源云推广
  • 网站建设百度贴吧临沂色度广告有限公司
  • 如何做介绍一门课程的网站市场调研的内容
  • 网站建设教程软件建站系统主要包括
  • 公司网站建立流程百度竞价点击一次多少钱
  • 做网站运营用什么软件石家庄网络推广
  • 帮人做海报的网站谷歌搜索引擎香港免费入口
  • 聪明的上海网站柳州今日头条新闻
  • 还有哪些网站可以做淘宝活动网络文章发布平台
  • 建设西安网站关键词优化的发展趋势
  • 网站怎么做返回主页按钮怎样宣传自己的产品
  • 网站后台尺寸一般做多大的南宁seo推广公司
  • 阿里网站建设费用seo培训机构哪家好
  • 做网站什么样的域名好搜客
  • 哪里网站备案长春网站开发
  • asp做网站很少sem是什么牌子
  • 嘉定西安网站建设微营销平台
  • 注册外国网站百度投诉中心24人工客服
  • 网站关键词密度怎么计算的深圳百度开户
  • 长沙网站推广公司哪家好北京关键词排名推广