自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊數(shù)據(jù)結(jié)構(gòu)與算法:二叉堆

開發(fā) 前端
在一個(gè)包含 n 個(gè)數(shù)據(jù)的數(shù)組中,我們可以維護(hù)一個(gè)大小為 K 的小頂堆,順序遍歷數(shù)組,從數(shù)組中取出數(shù) 據(jù)與堆頂元素比較。如果比堆頂元素大,我們就把堆頂元素刪除,并且將這個(gè)元素插入到堆中。

一、定義

二叉堆本質(zhì)上是一種完全二叉樹,它分為兩個(gè)類型。

1. 大頂堆(最大堆)

最大堆的任何一個(gè)父節(jié)點(diǎn)的值,都大于或等于它左、右孩子節(jié)點(diǎn)的值

2. 小頂堆(最小堆)

最小堆的任何一個(gè)父節(jié)點(diǎn)的值,都小于或等于它左、右孩子節(jié)點(diǎn)的值

二叉堆的根節(jié)點(diǎn)叫作堆頂。

最大堆和最小堆的特點(diǎn)決定了:最大堆的堆頂是整個(gè)堆中的最大元素;最小堆的堆頂是整個(gè)堆中的最小元素

二、二叉堆存儲(chǔ)

完全二叉樹比較適合用數(shù)組來存儲(chǔ)。用數(shù)組來存儲(chǔ)完全二叉樹是非常節(jié)省存儲(chǔ)空間的。

因?yàn)槲覀儾恍枰?存儲(chǔ)左右子節(jié)點(diǎn)的指針,單純地通過數(shù)組的下標(biāo),就可以找到一個(gè)節(jié)點(diǎn)的左右子節(jié)點(diǎn)和父節(jié)點(diǎn)。

從圖中我們可以看到,數(shù)組中下標(biāo)為 i 的節(jié)點(diǎn)的左子節(jié)點(diǎn),就是下標(biāo)為 i?2 的節(jié)點(diǎn),右子節(jié)點(diǎn)就是下標(biāo) 為 i?2+1 的節(jié)點(diǎn),父節(jié)點(diǎn)就是下標(biāo)為 i/2 取整的節(jié)點(diǎn)。

三、二叉堆的典型應(yīng)用

優(yōu)先隊(duì)列

利用堆求 Top K問題

在一個(gè)包含 n 個(gè)數(shù)據(jù)的數(shù)組中,我們可以維護(hù)一個(gè)大小為 K 的小頂堆,順序遍歷數(shù)組,從數(shù)組中取出數(shù) 據(jù)與堆頂元素比較。如果比堆頂元素大,我們就把堆頂元素刪除,并且將這個(gè)元素插入到堆中;如果比 堆頂元素小,則不做處理,繼續(xù)遍歷數(shù)組。這樣等數(shù)組中的數(shù)據(jù)都遍歷完之后,堆中的數(shù)據(jù)就是前 K 大 數(shù)據(jù)了

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2020-11-02 09:15:47

算法與數(shù)據(jù)結(jié)構(gòu)

2021-04-01 10:34:18

Java編程數(shù)據(jù)結(jié)構(gòu)算法

2021-03-29 10:13:47

Java編程數(shù)據(jù)結(jié)構(gòu)算法

2021-03-19 10:25:12

Java數(shù)據(jù)結(jié)構(gòu)算法

2021-03-22 09:00:22

Java數(shù)據(jù)結(jié)構(gòu)算法

2020-11-23 08:53:34

堆Heap

2020-09-23 18:25:40

算法二叉樹多叉樹

2021-04-19 07:47:42

數(shù)據(jù)結(jié)構(gòu)二叉樹Tree

2021-04-20 08:37:14

數(shù)據(jù)結(jié)構(gòu)二叉樹

2022-09-05 08:06:49

數(shù)據(jù)結(jié)構(gòu)Java

2013-01-30 10:34:02

數(shù)據(jù)結(jié)構(gòu)

2020-08-31 07:43:58

二叉堆大頂堆存儲(chǔ)

2021-04-28 20:12:27

數(shù)據(jù)結(jié)構(gòu)創(chuàng)建

2021-01-07 08:12:47

數(shù)據(jù)結(jié)構(gòu)二叉樹

2021-05-06 05:29:32

二叉堆數(shù)據(jù)結(jié)構(gòu)算法

2021-03-02 10:57:39

二叉樹二叉堆節(jié)點(diǎn)

2020-10-21 14:57:04

數(shù)據(jù)結(jié)構(gòu)算法圖形

2023-03-08 08:03:09

數(shù)據(jù)結(jié)構(gòu)算法歸并排序

2023-10-27 07:04:20

2025-04-29 09:56:39

Python數(shù)據(jù)結(jié)構(gòu)開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)