Top K Numbers介紹大綱:
《上篇》
- 介紹Binary Heap(二元堆積)的結構與特性
- Binary Heap與陣列的關係
《中篇》
- Binary Heap種類
- Heap Sort: 了解什麼是heapify,以及heapify如何利用binary heap實現陣列排序
《下篇》
-Top K Numbers Pattern介紹與應用題型
昨天介紹了Binary Heap,今天要來看看如何使用Binary Heap對陣列進行排序。
首先,我們要知道Binary Heap(二元堆積)分為兩種(如下圖):
了解max-heap跟min-heap,可以知道heap是利用資料結構進行資料排序方式。
所謂的排序,就是讓無序的Binary Tree,經過Heap Sort後,變成max-heap 或是 min-heap,這個過程稱為"Heapify"。
假設給定一個未排序的陣列(如下圖左側),而陣列對應的heap結構(如下圖右側)
Heap Sort執行步驟如下:
步驟一. 根據陣列中的元素,建立一個max-heap(最大堆積)
(或 min-heap(最小堆積),這邊先以max-heap(最大堆積)進行舉例)
步驟2. max-heap排序好後,移除最大的數字,也就是root(根節點),並把移除的數字放進sorted array中。
在重新heapify的過程中,已經被移除的根節點(root)數字9,在陣列中不會再移動。
重複以上步驟,直到heap中所有的node都被放進sorted array後,就完成heap sort囉!
Reference: