码迷,mamicode.com
首页 > 其他好文 > 详细

2、优先队列、图、前缀树、线段树、树状树组

时间:2020-01-07 00:52:01      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:场景   基本   定义   初始   线段树   elements   element   交换   图片   

1、优先队列

每次取出的元素是队列中优先级(自定义)最高的

常用场景:按一定的规则顺序筛选数据

本质结构:二叉堆(可利用数组结构来实现完全二叉树)

特性:

第一个元素array[0]优先级最高

下表i,对于元素array[i]:

            父节点,下标为 (i-1)/2

            左孩子,2*i+1

            右孩子,2*i+2

            数组中每个节点的优先级高于两侧子节点

技术图片

 

基本操作:

向上筛选:新数据加入、先放到堆底部、不断的和父节点比较交换、反复、o(logK)

向下筛选:删除堆顶数据数据、将堆底部的元素放到堆顶、和两个孩子对比看哪个优先级最高交换、反复、o(logK)

优先队列的初始换:

O(n): o(1log1  +2log2 .......)

一些问题:

347. 前 K 个高频元素

2、优先队列、图、前缀树、线段树、树状树组

标签:场景   基本   定义   初始   线段树   elements   element   交换   图片   

原文地址:https://www.cnblogs.com/feihu-h/p/12159110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!