# 算法學習筆記之二(堆排序)
堆其實是一個數組,它可以看成一個二叉樹,用來儲存數組里的元素。

其中10為根結點,25,30,70為葉結點,其余稱為結點。當父結點的鍵值總是大于或等于任何一個子節點的鍵值時為最大堆。當父結點的鍵值總是小于或等于任何一個子節點的鍵值時為最小堆。一個結點的高度就是從結點到葉節點的最長路徑,一個堆的高度就是根節點的高度。含n個元素的堆高度是floor[log2(n)].
堆排序利用的是最大堆的性質。
~~~
Parent(i)//返回一個結點的父結點
returnfloor[i/2]
Left(i)//返回一個結點的左子節點
return 2*i
Right(i) //返回一個結點的右子節點
return 2*i+1
Max_Heapify(i)//維護以i為結點的子樹的最大堆性質
l=Left(i)
r=Right(i)
if l<=A.heap-size and A[l]>A[i]
large=l
else
large=i
if r<= A.heap-size and A[r]>A[larget]
larget=r
if larget !=i
exchanceA[i] with A[larget]
Maax_Heapify(A.larget)
Build_Max_Heapify(A)//建立一個堆
A.heap-size=A.length
For i=floor[A.length/2] downto 2
Max_Heapify(A,i)
HeapSort(A)//每一次提取根節點的值,也就是最大值,然后重新建立最大堆
Build_Max_Heapify(A)
for i=A.length downto 2
ExchanceA[1] with A[i]
A. heap-size =A.heap-size-1
Max_Heapify(A,1)
~~~
堆排序的時間復雜度也是O(n*log2(n))
雖然堆排序不是最優,但是其堆的結構卻很能引發我們的思考,比如用堆結構可以實現優先隊列;接下來就是學習優先隊列了。
- 我的筆記
- 服務器
- ubuntu svn 環境的搭建
- ubuntu Memcache 的配置
- ubuntu 密鑰登錄服務器
- centos 搭建服務器環境
- nginx+tomcat 集群搭建
- 餐廳運營來看如何構建高性能服務器
- VMware-Centos-網絡配置
- Ubuntu-PHP-Apache-Mysql-PhpMyadmin的搭建
- UbuntuApache配置日志
- linux獲取當前執行腳本的目錄
- Ubuntu svn的快速配置(原創)
- Https配置
- Mysql 不支持遠程連接解決方案
- ubuntu+apache+rewrite
- php Mcrypt 擴展
- 重啟Apache出現警告信息Could not reliably determine the server's fully qualified domain name,
- Mysql無法遠程連接
- 定時任務設置
- Linux中Cache內存占用過高解決辦法
- Ubuntu14-04安裝redis和php5-redis擴展
- php
- thinkphp3.2 一站多城市配置
- PHP 安全編程建議(轉)
- phpexcel導入時間處理
- Mysql按時,天,月,年統計數據
- PHP-支付寶-APP支付
- 百度爬蟲-獲取全國數據
- PHPEXCEL導入導出excel文件
- php-微信app支付后端設計
- Phpqrcode生成二維碼
- 圖片+文字水印
- 數據庫優化
- java
- Mybatis 二級緩存
- 微信
- 微信公眾號多域名授權
- 微信掃碼支付
- web
- 網站性能優化方案實施
- ionic環境搭建
- 登錄設計方案
- 設置dev元素的寬高比例
- 設計模式
- app
- 版本更新
- 微擎數據庫操作擴展
- select
- find
- delete
- update
- insert
- where
- order
- page
- group
- having
- limit
- fields
- debug
- bind
- join
- alias
- query
- 聚合函數
- count
- sum
- max
- min
- avg
- 事務管理
- 自增自減
- 算法設計
- ACM:入口的選擇------深度優先搜索
- java:N的N次方
- 最少攔截系統:貪心思想
- ACM:蠶寶寶:搜索
- ACM:n!的位數 :斯特林公式
- 神奇的異或
- 中國剩余定理
- 矩陣翻硬幣
- 回溯法
- ACM程序設計網站集錦
- 博弈論
- 多維空間上的搜索算法
- 算法學習筆記之一(排序)
- 算法學習筆記之二(堆排序)
- 算法學習筆記之三(快速排序)
- ACM俱樂部密碼
- 原創開源
- 個人感悟