精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

面試官:說說你對堆的理解?如何實現?應用場景?

開發 測試
堆化的過程是順著節點所在路徑比較交換的,所以堆化的時間復雜度跟樹的高度成正比,也就是Olog(n),插入數據和刪除堆頂元素的主要邏輯就是堆化。

[[426251]]

本文轉載自微信公眾號「JS每日一題」,作者灰灰。轉載本文請聯系JS每日一題公眾號。

一、是什么

堆(Heap)是計算機科學中一類特殊的數據結構的統稱

堆通常是一個可以被看做一棵完全二叉樹的數組對象,如下圖:

總是滿足下列性質:

  • 堆中某個結點的值總是不大于或不小于其父結點的值
  • 堆總是一棵完全二叉樹

堆又可以分成最大堆和最小堆:

  • 最大堆:每個根結點,都有根結點的值大于兩個孩子結點的值
  • 最小堆:每個根結點,都有根結點的值小于孩子結點的值

二、操作

堆的元素存儲方式,按照完全二叉樹的順序存儲方式存儲在一個一維數組中,如下圖:

用一維數組存儲則如下:

  1. [0, 1, 2, 3, 4, 5, 6, 7, 8] 

根據完全二叉樹的特性,可以得到如下特性:

  • 數組零坐標代碼的是堆頂元素
  • 一個節點的父親節點的坐標等于其坐標除以2整數部分
  • 一個節點的左節點等于其本身節點坐標 * 2 + 1
  • 一個節點的右節點等于其本身節點坐標 * 2 + 2

根據上述堆的特性,下面構建最小堆的構造函數和對應的屬性方法:

  1. class MinHeap { 
  2.   constructor() { 
  3.     // 存儲堆元素 
  4.     this.heap = [] 
  5.   } 
  6.   // 獲取父元素坐標 
  7.   getParentIndex(i) { 
  8.     return (i - 1) >> 1 
  9.   } 
  10.    
  11.   // 獲取左節點元素坐標 
  12.   getLeftIndex(i) { 
  13.     return i * 2 + 1 
  14.   } 
  15.    
  16.  // 獲取右節點元素坐標 
  17.   getRightIndex(i) { 
  18.     return i * 2 + 2 
  19.   } 
  20.    
  21.   // 交換元素 
  22.   swap(i1, i2) { 
  23.     const temp = this.heap[i1] 
  24.     this.heap[i1] = this.heap[i2] 
  25.     this.heap[i2] = temp 
  26.   } 
  27.    
  28.   // 查看堆頂元素 
  29.   peek() { 
  30.     return this.heap[0] 
  31.   } 
  32.    
  33.   // 獲取堆元素的大小 
  34.   size() { 
  35.     return this.heap.length 
  36.   } 

涉及到堆的操作有:

  • 插入
  • 刪除

插入

將值插入堆的底部,即數組的尾部,當插入一個新的元素之后,堆的結構就會被破壞,因此需要堆中一個元素做上移操作

將這個值和它父節點進行交換,直到父節點小于等于這個插入的值,大小為k的堆中插入元素的時間復雜度為O(logk)

如下圖所示,22節點是新插入的元素,然后進行上移操作:

相關代碼如下:

  1. // 插入元素 
  2. insert(value) { 
  3.   this.heap.push(value) 
  4.   this.shifUp(this.heap.length - 1) 
  5.  
  6. // 上移操作 
  7. shiftUp(index) { 
  8.   if (index === 0) { return } 
  9.   const parentIndex = this.getParentIndex(index
  10.   if(this.heap[parentIndex] > this.heap[index]){ 
  11.     this.swap(parentIndex, index
  12.     this.shiftUp(parentIndex) 
  13.   } 

刪除

常見操作是用數組尾部元素替換堆頂,這里不直接刪除堆頂,因為所有的元素會向前移動一位,會破壞了堆的結構

然后進行下移操作,將新的堆頂和它的子節點進行交換,直到子節點大于等于這個新的堆頂,刪除堆頂的時間復雜度為O(logk)

整體如下圖操作:

相關代碼如下:

  1. // 刪除元素 
  2. pop() { 
  3.   this.heap[0] = this.heap.pop() 
  4.   this.shiftDown(0) 
  5.  
  6. // 下移操作 
  7. shiftDown(index) { 
  8.   const leftIndex = this.getLeftIndex(index
  9.   const rightIndex = this.getRightIndex(index
  10.   if (this.heap[leftIndex] < this.heap[index]){ 
  11.     this.swap(leftIndex, index
  12.     this.shiftDown(leftIndex) 
  13.   } 
  14.   if (this.heap[rightIndex] < this.heap[index]){ 
  15.     this.swap(rightIndex, index
  16.     this.shiftDown(rightIndex) 
  17.   } 

時間復雜度

關于堆的插入和刪除時間復雜度都是Olog(n),原因在于包含n個節點的完全二叉樹,樹的高度不會超過log2n

堆化的過程是順著節點所在路徑比較交換的,所以堆化的時間復雜度跟樹的高度成正比,也就是Olog(n),插入數據和刪除堆頂元素的主要邏輯就是堆化

三、總結

堆是一個完全二叉樹

堆中每一個節點的值都必須大于等于(或小于等于)其子樹中每個節點的值

對于每個節點的值都大于等于子樹中每個節點值的堆,叫作“大頂堆”

對于每個節點的值都小于等于子樹中每個節點值的堆,叫作“小頂堆”

根據堆的特性,我們可以使用堆來進行排序操作,也可以使用其來求第幾大或者第幾小的值

參考文獻

https://baike.baidu.com/item/%E5%A0%86/20606834

 

https://xlbpowder.cn/2021/02/26/%E5%A0%86%E5%92%8C%E5%A0%86%E6%8E%92%E5%BA%8F/

 

責任編輯:武曉燕 來源: JS每日一題
相關推薦

2021-09-29 07:24:20

場景數據

2021-09-16 07:52:18

算法應用場景

2021-10-13 18:01:33

快速排序場景

2021-10-08 09:59:32

冒泡排序場景

2021-10-09 10:25:41

排序應用場景

2021-11-05 07:47:56

代理模式對象

2021-11-09 08:51:13

模式命令面試

2021-11-10 07:47:49

組合模式場景

2021-08-16 08:33:26

git

2021-11-03 14:10:28

工廠模式場景

2021-10-11 09:38:41

開源

2021-10-12 07:15:02

歸并排序場景

2021-11-11 16:37:05

模板模式方法

2021-09-06 10:51:27

TypeScriptJavaScript

2021-11-22 23:50:59

責任鏈模式場景

2021-10-14 07:55:20

二分查找面試

2021-09-10 06:50:03

TypeScript裝飾器應用

2021-09-08 07:49:34

TypeScript 泛型場景

2021-11-04 06:58:32

策略模式面試

2021-05-31 10:35:34

TCPWebSocket協議
點贊
收藏

51CTO技術棧公眾號

日韩欧美一区二区视频在线播放| 亚洲网在线观看| 日本a在线天堂| 午夜性色福利视频| 国产午夜精品一区二区三区欧美 | 日韩欧美亚洲成人| 国产一级特黄a大片99| av网站中文字幕| 日韩美脚连裤袜丝袜在线| 欧美日韩亚洲精品内裤| 性欧美.com| www.日本在线观看| 国产精品激情| 亚洲精品视频免费在线观看| 一区二区在线播放视频| 国产在线高清视频| 成人av一区二区三区| 欧美自拍视频在线| 欧美性x x x| 日韩精品社区| 欧美美女直播网站| 男人添女人荫蒂免费视频| 九色视频网站在线观看| 国内精品国产三级国产a久久| 久久99国产精品自在自在app| 亚洲av无码一区二区二三区| 成人精品在线| 欧美性猛交xxxx乱大交极品| 成年人免费观看的视频| 色婷婷av一区二区三| 久久精品国产精品亚洲综合| 91国产一区在线| 日韩av毛片在线观看| 欧美激情99| 欧美肥妇毛茸茸| 久草免费福利在线| 亚洲天天影视| 久久一区二区三区四区| 亚洲一区二区久久久久久| 黄色片网站在线免费观看| 久久久久久久久国产一区| 亚洲美女久久久| 无码人妻一区二区三区免费n鬼沢| 午夜av成人| 亚洲成av人片一区二区| 亚洲精品少妇一区二区| www日韩tube| 91麻豆高清视频| 99久久精品久久久久久ai换脸| 在线免费观看国产精品| 亚洲精品裸体| 欧美极品xxxx| 国产探花在线播放| 国产精品二区不卡| 中文字幕在线日韩| 中日韩精品一区二区三区| 成人台湾亚洲精品一区二区| 欧美一区二区精品在线| 亚洲 欧美 另类人妖| 美脚恋feet久草欧美| 性做久久久久久免费观看欧美| 超碰在线免费观看97| av在线免费观看网| 国产亚洲污的网站| 另类视频在线观看+1080p| 亚洲国产精品欧美久久 | 欧洲成人免费aa| 日韩在线视频免费播放| 欧美精选在线| 欧美激情国产高清| 婷婷在线精品视频| 欧美精品九九| 欧美片一区二区三区| 一区视频免费观看| 欧美日韩一区二区国产| 国产做受69高潮| 久久精品国产亚洲AV无码男同| 亚洲天堂免费| 欧美黑人狂野猛交老妇| 精品无码人妻一区二区三区| 国模大胆一区二区三区| 免费91麻豆精品国产自产在线观看| 你懂得在线观看| 欧美日韩一区二区三区视频播放| 国产视频欧美视频| 中文字幕免费高清| 久久神马影院| 久久天天躁狠狠躁夜夜躁| 三级影片在线看| 亚洲欧洲午夜| 日本免费在线精品| 欧美成人一区二区视频| 久久草av在线| 91免费看网站| 亚州男人的天堂| 国产三级精品三级在线专区| 亚洲成人第一| 综合图区亚洲| 欧美日韩精品二区| 九九热免费在线观看| 日韩在线成人| 日韩久久精品成人| 国产一区在线观看免费| 永久91嫩草亚洲精品人人| 国内精品久久久久伊人av| 日本中文字幕久久| 国产曰批免费观看久久久| 91在线播放视频| 色视频免费在线观看| 中文字幕高清一区| 青春草国产视频| 欧美一区久久久| 制服丝袜亚洲色图| 成年人的黄色片| 日韩免费一区| 午夜精品久久久久久久99黑人| 中文字幕在线天堂| 国产美女久久久久| 日韩免费中文专区| 视频在线观看入口黄最新永久免费国产 | 欧美先锋影音| 国产精品久久久久久久久久新婚| 中文字幕免费高清在线观看| 成人精品小蝌蚪| 亚洲欧洲精品在线 | 激情成人开心网| 成人免费直播| 欧美不卡一区二区三区| 在线免费观看视频| 亚洲人成毛片在线播放女女| 国产精品视频中文字幕91| 隣の若妻さん波多野结衣| 中文字幕巨乱亚洲| 青青视频在线播放| 国产视频一区二区在线播放| 亚洲男人7777| 日本网站免费观看| 国产精品1区二区.| 亚洲一区二区三区午夜| 黑人巨大精品| 精品成人在线观看| 91视频综合网| 狠狠网亚洲精品| 日本一区二区不卡高清更新| a√中文在线观看| 日韩色在线观看| 三级影片在线观看| 日本免费新一区视频| 九九九九久久久久| 国模精品视频| 亚洲高清福利视频| 久久久99精品| 国产成人啪免费观看软件 | 中文字幕乱码亚洲无线精品一区| 国产成人亚洲综合青青| 天天av综合网| 婷婷六月综合网| 91福利视频免费观看| 欧洲grand老妇人| 国产成人av在线| 国产主播福利在线| 在线看国产一区| 亚洲自拍偷拍图| 美女网站久久| 五月天亚洲综合情| 丁香久久综合| 中文字幕在线观看日韩| 探花视频在线观看| 白白色 亚洲乱淫| 日本aa在线观看| 久久av偷拍| 欧美美女操人视频| wwwav网站| 亚洲一区二区三区免费视频| 中文字幕人妻熟女在线| 亚洲麻豆视频| 欧美日韩精品免费看 | 日韩免费在线看| 欧美色视频免费| 欧美日韩国产中文精品字幕自在自线| aa一级黄色片| 日本麻豆一区二区三区视频| 在线视频欧美一区| www.com黄色片| www.亚洲天堂网| 午夜av不卡| 日韩电影中文字幕av| 欧美日韩综合在线观看| 99riav久久精品riav| 国产激情片在线观看| 亚洲一区二区三区中文字幕在线观看| 亚洲成av在线| 91在线一区| 精品亚洲一区二区| 国产成人无码av| 国产字幕视频一区二区| 在线观看国产欧美| 亚洲影视一区二区| 亚洲嫩草精品久久| 黄色性视频网站| 久久福利影视| 亚洲午夜久久久影院伊人| 深夜激情久久| 欧美综合激情网| 日本免费在线观看| 亚洲成在人线av| 国产成人精品777777| 亚洲免费视频中文字幕| 亚洲欧美在线不卡| 九色porny丨国产精品| 黄色一级片在线看| 成人看的羞羞网站| 国产伦精品一区二区三区照片91| 国产超碰精品| 色综合视频网站| 国产乱理伦片a级在线观看| 91精品国产美女浴室洗澡无遮挡| 五月天婷婷丁香| 国产精品不卡视频| 鲁大师私人影院在线观看| 开心九九激情九九欧美日韩精美视频电影 | 日本欧美在线视频免费观看| 精品sm捆绑视频| 在线观看xxxx| 一本到三区不卡视频| 青青草手机在线观看| 国产精品乱码人人做人人爱| 中文字幕免费高清视频| 韩国v欧美v日本v亚洲v| 欧美精品第三页| 影音先锋久久久| 正在播放亚洲| 精品视频久久| 欧美高清视频一区| 视频欧美一区| 亚洲999一在线观看www| 粉嫩91精品久久久久久久99蜜桃| 久久免费视频网| 成人在线网址| 中文国产成人精品久久一| 天堂av在线免费观看| 欧美久久一区二区| 中文字幕第一页在线播放| 一区二区三区免费网站| 免费精品在线视频| 国产日产欧美一区二区三区 | 久一区二区三区| 亚洲男人的天堂一区二区| 特级西西人体高清大胆| www.亚洲色图.com| 中文字幕人妻无码系列第三区| 日韩影院精彩在线| 日本a视频在线观看| 天堂美国久久| 亚洲一区二区三区午夜| 久久神马影院| 在线国产99| 国产精品videosex性欧美| 亚洲成人在线视频网站| 欧美在线色图| 免费观看在线综合| 国产高清精品软男同| 精品日本12videosex| 欧美一级二级三级| 国产乱码精品一区二区亚洲| 另类小说综合网| 蜜臀av免费一区二区三区| 久久久久久久久久久久久久一区 | 亚洲精品国产第一综合99久久| 一级片黄色录像| 亚洲天堂成人在线观看| 婷婷社区五月天| 亚洲日本中文字幕区| 日本少妇高清视频| 一区二区三区高清不卡| 国产在线视频99| 午夜精品久久久| 日韩免费视频一区二区视频在线观看| 精品电影在线观看| 成人精品免费在线观看| 色av成人天堂桃色av| 日韩精品国产一区二区| 欧美视频国产精品| 夜夜爽妓女8888视频免费观看| 欧美探花视频资源| 国产永久免费视频| 精品毛片乱码1区2区3区| 亚洲免费一级片| 亚洲女人天堂av| 成人在线观看免费| 日韩亚洲综合在线| av免费在线观| 38少妇精品导航| jizzjizz少妇亚洲水多| 国产精品视频男人的天堂| 日本精品网站| av激情久久| 深夜福利久久| 91免费视频黄| 99成人在线| www.超碰com| 黑人精品欧美一区二区蜜桃| 任你躁av一区二区三区| 成人的网站免费观看| 醉酒壮男gay强迫野外xx| 中文字幕巨乱亚洲| 国产无码精品在线观看| 欧美色综合久久| 亚洲国产精品一| 亚洲欧美国产精品久久久久久久| 欧美午夜电影一区二区三区| 欧美极品少妇xxxxⅹ免费视频| 电影亚洲精品噜噜在线观看| 91免费国产网站| 亚洲精品无吗| 穿情趣内衣被c到高潮视频| 9国产精品视频| 精品综合久久久久| www久久久久| caoporn91| 日本精品免费观看高清观看| 亚洲第一天堂在线观看| 永久555www成人免费| 99riav视频在线观看| 成人黄色生活片| 国产探花在线精品| 精品一区二区三区无码视频| 麻豆精品在线播放| yy6080午夜| 亚洲男人的天堂在线观看| 国产免费a视频| 亚洲国产欧美精品| 超碰porn在线| 国产精品va在线| 麻豆精品少妇| 97超碰人人爱| 免费一级片91| 97超碰在线免费观看| 亚洲午夜久久久久久久久电影网| 337p粉嫩色噜噜噜大肥臀| 在线观看91av| av在线首页| 国产精品国语对白| 国产成人1区| 免费看日本毛片| 成人动漫精品一区二区| 丁香花五月激情| 911精品产国品一二三产区| 成人免费黄色网页| 国产成人久久精品| 国产精品自拍区| 激情网站五月天| 久久先锋影音av| 欧美性猛交bbbbb精品| 精品国产91洋老外米糕| 亚洲国产精品精华素| 成人av色在线观看| 91精品啪在线观看国产18| 国产又黄又猛又粗| 亚洲国产精品二十页| 中文在线字幕av| 中文字幕在线看视频国产欧美在线看完整 | 国产亚洲精品va在线观看| 中文字幕在线视频网站| 国产亚洲精品自在久久| 亚洲国产一区二区三区高清| 欧美图片自拍偷拍| 亚洲成人免费视频| 天堂网在线播放| 欧美综合在线观看| 国产精品午夜一区二区三区| 成年人视频网站免费观看| 久久中文字幕电影| 波多野结衣一区二区三区在线| 永久免费精品影视网站| 久久免费资源| 天天爱天天做天天操| 国产一区二区不卡在线| 精品视频一区二区在线观看| 日韩美女主播在线视频一区二区三区 | 在线午夜精品| 国产欧美一区二区三区沐欲| 国产午夜精品无码| 亚洲欧美色婷婷| 日日夜夜综合| 欧美日本视频在线观看| 国产精品久久久一本精品| 超碰在线人人干| 国产不卡在线观看| 国产一区久久| 天天躁夜夜躁狠狠是什么心态| 51精品视频一区二区三区| 欧美私密网站| 黄色高清视频网站| 91麻豆免费观看| 精品国自产在线观看| 欧洲亚洲女同hd| 欧美精品大片| 波多野结衣家庭教师在线观看 | 在线观看免费不卡av|