導航:首頁 > 源碼編譯 > 堆貨演算法

堆貨演算法

發布時間:2024-11-28 08:41:25

① 【跟著小蛋刷演算法】什麼是堆如何實現堆排序,滿滿的干貨來了

堆可以理解為特殊樹形結構,滿足兩個條件:完全二叉樹與值的比較規則(大頂堆或小頂堆)。完全二叉樹特點是除最後一層外,其他層節點滿載,最後一層靠左排列。大頂堆為每個節點大於或等於子節點,小頂堆為每個節點小於或等於子節點。以下圖示為堆的示例。

構建堆採用數組形式。每個節點存儲在數組的第二位置開始,定義節點在數組的位置為i,左子節點為2i,右子節點為2i+1。通過此規律可以推導出節點關系。接下來通過代碼實現堆的各種功能。

往堆中插入元素時,需滿足堆的特性。如果插入後不滿足,執行堆化操作,即新插入的節點與父節點比較,若不滿足子節點小於等於父節點則交換節點值,重復過程直到堆滿足特性。此過程如圖示。

刪除堆頂元素,即刪除堆中最大元素。將堆頂元素值與最後一個節點值互換,再執行堆化過程,直到堆滿足特性。圖示此過程。

堆排序利用堆進行排序。首先將序列構造成大頂堆,最大值在堆頂。接著交換堆頂元素與末尾元素,將剩餘元素重新構造成堆,得到次大值,反復執行得到有序序列。

實現堆排序的第一步是構建大頂堆,採用從上往下的堆化方式。假設待排序序列{0,7,5,19,8,4,1,20,13,16},堆元素從數組下標1開始,總共有9個元素。循環從9/2=4開始,直至1,因為這些節點有子節點。

排序過程是不斷將堆頂元素與末尾元素交換,將堆元素減1,然後重新堆化,重復直至完成排序。整個過程如圖所示。

堆排序時間復雜度包括構建堆與排序,構建堆為O(n),排序為O(nlogn),整體時間復雜度為O(nlogn)。

堆的概念、插入與刪除操作、堆排序與排序代碼詳解。總結堆知識點,堆排序流程,以及建堆和排序的代碼實現。

堆的知識點已大致講解,但演算法之路漫長,繼續堅持學習。關注小蛋,一起交流進步,更多的演算法干貨將不斷推出。

閱讀全文

與堆貨演算法相關的資料

熱點內容
泡沫APP在哪裡下載 瀏覽:937
簡述高級語言進行編譯全過程 瀏覽:39
管家婆輝煌2加密狗挪到另一台電腦 瀏覽:760
摩托車在哪裡app看考題 瀏覽:356
蘋果5app在哪裡設置 瀏覽:737
如何查看伺服器的磁碟使用 瀏覽:165
python蒙特卡洛模型投點圖 瀏覽:330
安卓手機屬於什麼介面 瀏覽:742
微信群推廣網站源碼 瀏覽:764
九江離鷹潭源碼 瀏覽:719
python可以當作函數的返回值 瀏覽:422
地鐵逃生體驗服怎麼進入安卓 瀏覽:833
齊魯工惠app的中獎記錄在哪裡 瀏覽:759
linuxkill命令詳解 瀏覽:104
dhcp伺服器動態分配地址 瀏覽:265
門禁卡加密了能破解嗎 瀏覽:215
在哪裡下載百度網盤app 瀏覽:917
伺服器要升級什麼意思 瀏覽:831
銀行還房貸解壓方法 瀏覽:702
伺服器主機辦公如何提速 瀏覽:920