堆是數據結構的一種萄涯,它和順序結構和鏈式結構相同晒奕,都有自己的合適的應用場景闻书。
利用堆,可以實現優(yōu)先隊列
隊列:先進先出脑慧,一般來說是按照時間來排序魄眉。
優(yōu)先隊列:按照優(yōu)先級別進行,先后的調用闷袒,優(yōu)先級別高的優(yōu)先被調用坑律,并且我們的隊列是動態(tài)改變的,在什么時間都有可能有新的請求入隊囊骤,而且某個請求的優(yōu)先級可能也會發(fā)生改變晃择。
在n個元素中,選出前m個元素也物,如果采用排序的話最好的性能也要NlogN,但是如果我們采用優(yōu)先隊列的話宫屠,它的性能就能被優(yōu)化到NlogM。
優(yōu)先隊列的實現
入隊 | 出隊 | |
---|---|---|
普通數組 | O(1) | O(n) |
順序數組 | O(n) | O(1) |
堆 | O(lgn) | O(lgn) |
這樣我們整個用堆實現的優(yōu)先隊列的級別就是O(lgn)級別了滑蚯,而用數組實現的則是O(n)級別浪蹂。
好了,大概介紹了什么是堆告材,以及堆的作用坤次,下面我的文章還會介紹如何實現一個堆和堆的一些算法,想深入了解的可以看一下我下面的文章创葡。