帖子摘要:前言 大家好我是良辰丫?我们又见面了前面我们讲了用链表实现的二叉树今天我们来接触堆的概念堆是一种特殊的二叉树只不过咱们的对底层原理是数组堆也是我们在做题中经常见到的那么接下来我们就慢慢的去接触堆认识堆......- N! |. d0 o( Q, a$ j. H / C% k! `# N' _" B大家好,欢迎来到Java吧(www.java8.com),交流、学习Java技术、获取Java资源无任何套路,今天说一说:“【堆的认识及其优先级队列】java代码实现,保姆级教程学习堆和优先级队列”7 k0 B# J8 V: i/ T( W
1 ~! p! q, i; x9 u( f# m" h. U1 e- g8 g- O! i$ c2 y( Z
+ u& |: x% s$ L% C/ k7 R8 }' ^ }
( N- O$ U. |- H
% Y7 [/ L1 m3 @( r( ` u
4 l3 `, c6 T0 w
& o8 b) c. ^; [8 R2 Z & V6 t$ n8 R0 C. H# X前言* L0 p& e9 L( E/ \$ Q3 C0 y
大家好我是良辰丫?我们又见面了前面我们讲了用链表实现的二叉树今天我们来接触
堆
复制代码
的概念堆是一种特殊的二叉树只不过咱们的对底层原理是数组堆也是我们在做题中经常见到的那么接下来我们就慢慢的去接触堆( W% h) Q# z5 q# B/ x/ w1 `6 n
认识堆理解堆掌握堆。 & L; b0 L J6 s( ]有疑惑可以和我一起讨论交流哦期待大家的来访。! a6 `8 A! n" p2 D( V
8 D; r* ?2 Z; L% j6 ^" _* Q& t 7 x+ Z6 ~9 t7 L, d; f/ Y; O : u8 ?. K0 _: a/ \% I; | 个人主页良辰针不戳 4 \4 _; Q9 U! g: [ 所属专栏java数据结构 5 P8 n- F) L' N+ | 励志语句生活也许会让我们遍体鳞伤但最终这些伤口会成为我们一辈子的财富。 ' j% F# _) X, o7 g0 X 期待大家三连关注点赞收藏。3 X6 J+ g* L' I% v7 W1 i
作者能力有限可能也会出错欢迎大家指正。 4 s0 V5 }. {1 j! b 愿与君为伴共探Java汪洋大海。1 `, U; g- b: w5 a7 k% F$ V
& v5 _! j# V; C" U
* t p+ m6 c% q* l : a) n% [' g, B2 w8 t" L& f 2 m4 F1 ~8 G- P, F
咿呀奇迹出现了通过上面的运行截图大家可以发现优先级队列并不遵守先进先出而是最小的数据先出来由此呢我们可以把它当成一种小根堆。( _3 R7 U0 z. |1 W" [ v% k' {
; a, L' P% U6 c# e* S4 f( x $ C! c. |9 v& B" |9 ^7 \
看到这里大家又产生疑惑默认为小根堆那么如果我们想要使用优先队列作为大根堆呢 / k* E. w- c* V5 T5 { 7 C7 O- y9 k7 r6 O' P( t : j) }# b8 U+ g/ a6 M3 K* o: e/ G
办法当然是有的呀这里我们引入了比较器。那么究竟如何实现呢我们慢慢往下看。 ' @# R8 W- I' {' J0 d! j, f0 U 3 ^4 ~) p$ H6 F0 d 2 B- U: Z/ Z' y1 o; u4 A( n2.2 比较器Comparator实现优先队列大根堆 : m$ }( C r# [8 D ; S1 s9 J3 e5 { Z, T- x# x: g, [ 看到这里可能大家会感到疑惑什么是
比较器
复制代码
呢 ( W! J: k3 a2 L* \7 _5 ~" H java中的对象提供的方法只能比较对象是否相等而不能比较大小java提供了一些接口可以指定对象的属性进行比较比如根据学生信息的年龄进行排序。! t, z, }8 r! R$ ?( J# _- J9 a4 e
) y# P' ^- A$ z' l" ]% N
呜呜呜看了上面的解释还不明白没关系在我上一篇文章中详细介绍了比较器如果大家对比较器有疑惑请去具体学习比较器。: w; e) c4 V0 l6 p
对象的比较点击跳转文章# L0 \1 q/ K) D K K
& Y+ D T# {& E* F& R( z . B& J" C" _9 Y, _- r. q! C