第七章 计算复杂度概论:排序问题.ppt

第七章算度概排序算度原地置排序插入排序排序演算法插入排序分析演算法最差情下以比次的度分析插入排序分析演算法平均情下以比次的度分析插入排序分析演算法外空的使用情插入排序表交排序插入排序排序的分析摘要演算法排序每次比至多移除一倒置之演算法的下限定理再探合排序一序倒的入行合排序分析演算法外空的使用情合排序演算法合排序版演算法合排序版分析演算法外空的使用情分析合排序再探快速排序外空的使用情分析改良式快速排序堆排序堆基本的堆副程式完整二元本完整二元堆的高移除位於根的回覆堆特性函式之高定一具有的堆排序好的序

第七章 計算複雜度概論:排序問題 7.1計算複雜度 原地置換排序(in-place sort) 7.2 插入排序與選擇排序 演算法7.1插入排序(Insertion Sort) 分析演算法7.1 最差情況下,以key比較次數為準的時間複雜度分析(插入排序) 分析演算法7.1 平均情況下,以key比較次數為準的時間複雜度分析(插入排序) 分析演算法7.1 額外空間的使用情況(插入排序) 表7.1 交換排序、插入排序、 與選擇排序的分析摘要 演算法7.2 選擇排序(Selection Sort) 7.3 每次比較至多移除 一個倒置之演算法的下限 定理7.1 7.4再探合併排序 圖7.2 對一個順序顛倒的執入進行合併排序 分析演算法7.2 額外空間的使用情況(合併排序2) 演算法7.3 合併排序3(動態規劃版) 演算法7.4 合併排序4(鏈結版) 分析演算法7.4 額外空間的使用情況分析(合併排序4) 7.5再探快速排序 額外空間的使用情況分析 (改良式快速排序) 7.6 堆積排序 7.6.1 堆積與基本的堆積副程式 完整二元樹(complete binary tree) 本質完整二元樹 (essentially complete binary tree) 堆積(heap) 圖7.6 圖7.6的高階虛擬碼 移除位於根節點的key並回覆堆積特性函式之高階虛擬碼 給定一個具有n個key的堆積,負責將排序好的序列放進陣列s函式的高階虛擬式 圖7.7 圖7.7的高階虛擬碼 堆積排序(Heapsort)的高階虛擬碼 7.6.2實作堆積排序 堆積(heap)的資料結構 演算法7.5 堆積排序 分析演算法7.5 以key的比較次數 來看,最差情況的時間複雜度分析 分析Makeheap 分析removekeys 圖7.10 前兩個分析的總結 堆積排序的平均情況時間複雜度 分析演算法7.5 額外空間的使用情況分析(堆積排序) 7.7 合併排序、快速排序、 堆積排序的比較 表7.2 7.8 僅利用key的比較 進行排序的下限 7.8.1 提供排序演算法使用的 決策樹(decision tree) 圖7.11 圖7.12 7.8.2 最差情況下的下限 定理7.2 定理7.3 7.8.3 平均情況下的下限 圖7.13 定理7.4 7.9分堆排序(基數排序法,sort) 演算法7.6基數排序 分析演算法7.6 所有情況的時間複雜度(基數排序法) 分析演算法7.6 額外空間的使用情況(基數排序法) 任一僅靠key的比較來排序n個相異key的必然式(deterministic)演算法在最差情況下必須做至少 [nlgn-1.45n]次key的比較 證明:這個證明可由定理7.2及輔助定理7.4推導而來 在一般的情況下,使用的額外空間在 個鏈結中。“在 個鏈結中”代表鏈結的個數在 中 基本運算:在副程式siftdown中,key的比較次數 輸入大小:n,將被排序key的數目 堆積排序是一種原地置換排序,意味著他使用的額外空間在 中 任一僅靠key的比較來排序n個相異key的必然式(deterministic)演算法在最差情況下必須作至少 [log(n!)]次key的比較 證明:由輔助定理7.1,任一種僅靠key的比較來排序n個相異key的必然式(deterministic)演算法都對應到一顆有效且被修剪過,並含有n!個leaf節點的二元決策樹。由輔助定理7.3,該樹的深度大於或等於[log(n!)]。由輔助定理7.2我們得知任意決策樹最差情況的比較次數為該樹的深度,因此本定理得證 * * 7.1計算複雜度 7.2插入排序與選擇排序 7.3每次比較至多移除一個導致之演算法的下限 7.4再探合併排序 7.5再探快速排序 7.6堆積排序 7.6.1堆積與基本的堆積副程式 7.6.2實作堆積排序 7.7合併排序、快速排序、堆積排序 的比較 7.8僅利用Key的比較進行排序的下限 7.8.1提供排序演算法使用的 決策樹(decision tree) 7.8.2最差情況下的下限 7.8.3平均情況下的下限 7.9分堆

文档评论(0)

1亿VIP精品文档

相关文档