【算法導論】第六章、堆排序
基本過程:
1、保持最大堆的性質:假設兩個子堆都滿足,只需要根節點依次換下去,復雜度O(lg n)
2、初始化堆:後半段都是葉子,在前半段從後往前,依次執行上述最大堆性質的操作,名義復雜度是O(n lg n),但是有更精確的計算,
在高度為h的節點為O(h), 因此為 n\sigma (h / 2^h),其復雜度為O(n)。(思想是高層復雜度才高,指數衰減,而復雜度增長是lg級別,因此被dominate掉了)
堆排序算法:先建最大堆,每次把頂上的位置與合適的位置互換,然後執行過程1, 共執行n次,其復雜度為 O(n lg n)
優先級隊列:集合的一個管理方式
操作:insert(x, S), max(S), extract_max(S), increase(x, k, S) - 將x的值增長為k,
1、max 很顯然。。。取第一個元素即可
2、extract_max 與之前相同,O(lg n),
3、insert操作:在最後加入,然後一點一點上移。
堆排序代碼:未完待續
【算法導論】第六章、堆排序
相關推薦
【算法導論】第六章、堆排序
兩個 高度 位置 思想 n) 隊列 sigma 復雜 max 基本過程: 1、保持最大堆的性質:假設兩個子堆都滿足,只需要根節點依次換下去,復雜度O(lg n) 2、初始化堆:後半段都是葉子,在前半段從後往前,依次執行上述最大堆性質的操作,名義復雜度是O(n lg n),
【算法導論】第七章、快速排序
很好 補充 第七章 而是 合並 art 元素 一個 排序 快排的優勢: 1、期望為O(n lgn) 2、常數因子比較小 3、就地排序 4、在虛存環境很好工作 與合並排序一樣是分治思想,但是不是從中間截斷,而是通過partition過程實現的 每次選擇最後一個元素為q,然
【算法導論】第10章,基本數據結構
第一個元素 好的 del 計數器 pop let delete 隊列實現 排序 10.1 棧和隊列 都是動態集合,Delete操作是預先設定好的。 棧 Insert:push Delete: pop 實現,一個計數器記錄元素數量 同理,隊列實現是一個計數器記錄首尾元素的位置
【算法導論】第12章,二叉搜索樹
最小值 優先隊列 大於 時間 中序遍歷 復雜 默認 插入元素 它的 二叉搜索樹支持很多動態集合操作,可以當作字典,也可以當作優先隊列。 二叉搜索樹基本操作的時間代價與樹的高度成正比,log n 級別。隨機構造的二叉搜索樹的期望高度就是 log n。 每個節點包含信息:key
【算法導論】第15章,動態規劃
ima 矩陣鏈乘 得到 方法 最優 一個 nbsp image com 動態規劃問題的步驟 1、描述最優解的結構 2、遞歸定義最優解的值 3、自底向上計算最優解的值 4、由計算的結果構造最優解 一般要在第3步記錄一些附加信息, 自底向上逐步計算還有另外一種方法,可以帶備
《算法導論》第六章 練習題 Exercise
chan idt 告訴 mage 最大 關鍵字 樹堆 return while 6.1-1 在高度為 h 的堆中,元素最多有 2h+1 - 1 個,最少有 2h 個。註意算法導論裏的高度是指深度,從 0 開始而不是從 1 開始。 6.1-2 這很好
最長公共子序列--【算法導論】
pan end art blog src http size ret bdc 最長公共子序列:一個序列 S 。假設各自是兩個或多個已知序列的子序列,且是全部符合此條件序列中最長的,則 S 稱為已知序列的最長公共子序列。 其核心非常easy: 這樣,構造子結構就比較簡
算法入門經典第六章 例題6-5 移動盒子
stl 是否 %d 編號 ret 特殊 第六章 沒有 big 例題 6-5 移動盒子(Boxes in a Line, UVa127675) 問題 給定一行盒子,從左到右編號依次為1,2,...,n.可以執行以下命令: 1 X Y 把盒子 X 移動到 Y 的左邊(如果已經在
算法入門經典第六章 例題6-14 Abbott的復仇(Abbott's Revenge)BFS算法實現
alt es2017 算法實現 wid tro 最短 inpu ges ews Sample Input 3 1 N 3 3 1 1 WL NR * 1 2 WLF NR ER * 1 3 NL ER * 2 1 SL WR NF * 2 2 SL WF ELF *
算法入門經典第六章 例題6-15 給任務排序
訪問 images 技術 pan 是什麽 style efi 開始 max 假設有n個變量,還有m個二元組(u,v),分別表示變量u小於v。那麽,所有變量從小到大排列起來應該是什麽樣子呢?例如,有4個變量a,b,c,d,若已知a<b,c<b,d<c,
【軟件構造】第六章第二節 可維護的設計模式
派生 ural bridge lose 復用 部分 sed spa line 第六章第二節 可維護的設計模式 Outline 創造性模式:Creational patterns 工廠模式(Factory Pattern) 抽象工廠模式(Abstract Factory
【軟件構造】第六章第三節 面向可維護的構造技術
pre 協議 判斷 regex 格式 png ria 不包含 有一個 第六章第三節 面向可維護的構造技術 學了這麽多OO設計模式,不外乎都是 delegation + subtying,萬變不離其宗。 除了OO,還有什麽其他能夠提升軟件可維護性的構造技術?——本節從委派+子
最大流【算法導論】
image -s nbsp 導論 bubuko com strong col str 請右鍵圖片——查看圖圖像( *︾▽︾) 最大流【算法導論】
【算法導論】插入排序
-- class bsp png 根據 void inf div 如果 沒辦法就是這麽沒原則,又開了個坑。每天看點書,不管什麽書。 1. 需求: 輸入:n個數的一個序列(a1, a2, a3……an) 輸出: 輸出序列的一個排列(
【算法導論】歸並排序
spa sig ger 排序算法 序列 app 實現 append integer 1. 分治法:分治模型在每層遞歸的時都有三個步驟: a.分解原問題為若幹個子問題,這些子問題是原問題的規模較小的實例; b. 解決這些子問題,遞歸地求解各子問題的規模足夠小,則直
【算法導論】最大子數組
code msu 連續子數組 num clas -- 之前 col 方法 1.描述:找出數組A的和最大的非空連續子數組,我們稱這樣的連續子數組為最大子數組。 2. 用分治策略來求解。 a. 假設我們要求A的子數組A[low, high]的最大子數組。根據分治
【計算機組成原理】 第六章 中央處理器
一、主要內容: 組成原理知識點彙總與複習 授課:sunnyACT張思鵬(中城投絲路@180科技) 二、學習參考: sunnyACT張思鵬(中城投絲路@180科技)xmind使用參考: 必備工具|三分鐘帶
【SpringCloud Greenwich版本】第六章:智慧路由(zuul)
一、SpringCloud版本 本文介紹的Springboot版本為2.1.1.RELEASE,SpringCloud版本為Greenwich.RC1,JDK版本為1.8,整合環境為IntelliJ IDEA 二、zuul介紹 路由在微服務體系結構的一個組成部分。例如,/可以對映
【openshift 學習筆記】第六章 持續整合與部署
一. 部署 jenkins 服務下載並匯入jenkins-ephemeral-template模板# oc create -f https://raw.githubusercontent.com/ope
【資訊檢索導論】第9章 相關反饋及查詢擴充套件
第9章 相關反饋及查詢擴充套件 本章主要討論系統中進行查詢優化(query refinement)①的各種方法,包括全自動的方法和使用者參與的方法。查詢優化的方法主要可以分成兩類:全域性方法和區域性方法。全域性方法指的是在不考慮查詢及其返回文件情況下對初始查詢進行擴充套件和重構的方法,因此,擴充套件後查詢中