算法分析基礎——差消法求解高階遞推方程
差消法,簡單來講,就是對高階的遞推方程作差,轉化為一階方程後再運用叠代法。有了叠代法的基礎後,差消法理解起來就很容易了。這裏舉出對快速排序的分析加以說明。
對於快排,我們知道選擇不同的軸值,會導致不同的算法效率。最壞的情況下,選取的軸值恰好是待排序數組的最值,那麽排序的效率就會退化為線性時間。現在我們來估算平均情況下快速排序的時間復雜度。
設T(n)為待排序數組長度為n時,快速排序算法需要的比較次數。那麽T(1) = 0,而T(n)的遞推方程相對於軸值的選取有如下n種情況:
T(n) = T(0) + T(n - 1) + n - 1
T(n) = T(1) + T(n - 2) + n - 1
...
T(n) = T (n - 1) + T(0) + n - 1
假定選取的軸值在排序後的數組中的每個位置出現的概率相等。那麽平均情況下,就可以計算得到T(n)的遞推表達式為
這是n階的遞推方程,不適合直接采用叠代法。接下來即運用差消法來求解:將O(n)用cn來表達,得到
兩式相減得
再同除以n(n+1),得到熟悉的一階遞推方程
於是我們得出T(n) = Θ(nlogn)。
算法分析基礎——差消法求解高階遞推方程
相關推薦
算法分析基礎——差消法求解高階遞推方程
最值 直接 相等 長度 str http 技術分享 時間復雜度 alt 差消法,簡單來講,就是對高階的遞推方程作差,轉化為一階方程後再運用叠代法。有了叠代法的基礎後,差消法理解起來就很容易了。這裏舉出對快速排序的分析加以說明。 對於快排,我們知道選擇不同的軸值,會導致不同的
算法分析基礎——遞歸樹求解遞推方程
方法 display gin 標記 nlog eight 遞歸樹 估算 inf 從求解快速排序算法遞推方程的過程中,我們可以看到,遞推方程不能求出精確的解。即便如此,如果可以用某種方法估算出函數的階,那麽這對於算法分析的工作依然具有意義。本文即介紹了這樣一種估算方法,稱為遞
第十至十二章 算法分析--高階數據結構
需要 while 目的 pub 特殊 lar pan 編碼 void 1.貪婪算法的第二個應用為 哈夫曼編碼 來進行文件壓縮。 文件壓縮的主要問題是給文件中的所有字符分配能唯一識別的編碼(n個比特),如果我們事先知道所有字符出現的頻率,把頻率最高的放在最上層,頻率低的放在左
【算法學習】03---算法分析學習
循環 log 對數 子集 empty 分析 bsp 結果 -a 算法分析 算法分析 科學方法 細致的觀察真實世界的特點 根據觀察結果提出假設模型 根據模型預測未來的事件 繼續觀察並核實預測的準確性 反復直到確認預測和觀察一致 一般程序
漢諾塔問題遞歸算法分析
分解 cnblogs 算法 http 裏的 scan .com orm .cn 轉自:http://www.cnblogs.com/zhangqqqf/archive/2008/09/12/1289730.html 一個廟裏有三個柱子,第一個有64個盤子,從上往下盤子越來越
某某水表-M1卡數據算法分析
cnblogs 分享 -m 扇區 bsp alt 編號 水表 余額 # 某某水表-M1卡數據算法分析 ## 卡片數據-----------------------------扇區數據 | 金額:---
《數據結構與算法分析—C語言描述》pdf
動態 https con 設計 ear 詳細介紹 nbsp -i b- 下載地址:網盤下載 內容簡介 編輯 《數據結構與算法分析:C語言描述(原書第2版)》內容簡介:書中詳細介紹了當前流行的論題和新的變化,討論了算法設計技巧,並在研究算
算法-分析三種不同函數形式
算法三種定義函數的方式 function語句形式 函數直接量形式 通過Function構造函數形式定義函數 比較三種方式定義的區別 function語句 Function構造函數 函數直接量 兼容 完全
優化的選擇排序算法分析
-1 color turn log main select imp 技術 排序算法 對於選擇排序算法,其實有很大的一個問題:在每趟的比較過程中,程序一旦發現某個數據比第一位的數據小,立即交換它們。這保證在每趟比較的所有比較過的數據中,第1位的數據永遠是最小的
【算法分析與設計】【第一周】121.Best Time to Buy and Sell Stock&122. Best Time to Buy and Sell Stock II
部分 簡化 是我 -i 復雜 style 代碼 求一個 時間 原題來自:121:https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/ 122:https://leetcode.c
【數據結構與算法分析——C語言描述】練習1.1——選擇問題
problem 內容 語言 log %d include oid define signed 本部分內容來自http://www.cnblogs.com/mingc,筆者在此只用於整理學習。 問題描述:編寫一個程序解決選擇問題。令k=N/2。畫出表格顯示你的程序對於N為
javascript中兩種基本常用排序算法分析
穩定 得到 直觀 height 算法 錯誤 繼續 改進冒泡 有序 備註:內容大部分從網上復制,代碼為自己手寫。僅做知識的溫故知新,並非原創。 1.冒泡排序(Bubble Sort) (1)算法描述 冒泡排序是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個
Java數據結構和算法總結-冒泡排序、選擇排序、插入排序算法分析
odi .com 依次 一個數 演示 clas 邏輯 true odin 前言:排序在算法中的地位自然不必多說,在許多工作中都用到了排序,就像學生成績統計名次、商城商品銷量排名、新聞的搜索熱度排名等等。也正因為排序的應用範圍如此之廣,引起了許多人深入研究它的興趣,直至今
算法分析| 集1(漸近分析)
style 獲得 判斷 永遠 算法 大小為n 大於 set 讓我 為什麽分析算法性能? 應該照顧好許多重要的事情,如用戶友好,模塊化,安全性,可維護性等。為什麽要擔心性能? 對此的答案很簡單,只有我們有表現,才能有上述所有的東西。 比如我們如果表現像貨幣,我們可以買
算法分析| 小o和小ω符號
都是 得到 size center 將不 是否 效率 geeks mce 漸近分析的主要思想是對不依賴於機器特定常數的算法的效率進行測量,主要是因為該分析不需要實現算法並且要比較程序所花費的時間。我們已經討論了三個主要的漸近符號。使用以下2個漸近符號表示算法的時間復雜度。
算法分析| 集3(漸近符號)
www. 線性 兩個 height 表示法 alt size href 界定 前面三篇文章中,我們討論了漸近分析,最差,平均和最佳算法案例。 漸近分析的主要思想是對不依賴於機器特定常數的算法的效率進行測量,並且不需要執行算法和程序進行比較的時間。 漸近符號是用於表示漸近分析
算法分析| 系列4(解決遞推)
關系 height class pan 一個 bre series 循環 都是 在前一篇文章中,我們討論了循環的分析。許多算法本質上是遞歸的。當我們分析它們時,我們得到時間復雜度的遞歸關系。我們得到的運行時間是大小為n的輸入作為n的函數,以及較小大小的輸入的運行時間。例如在
算法分析| 第4集(循環分析)
使用 hms other == tle 評估 選擇排序 文章 font 我們在之前的帖子中討論了漸近分析, 最差,平均和最佳案例 還有漸近符號。 在這篇文章中,討論了使用簡單示例分析叠代程序。 1)O(1):如果一個函數(或一組語句)不包含循環,遞歸和調用任何其他非常
關於幾個java位運算的算法分析
這一 數組 blog 回歸 pan mask turn 判斷 二進制表示 問題一: 給定一個正整數N,求其二進制形式的第一個比特位1(從低位到高位的順序)。 例如,給定正整數12,其低8位二進制表示為:00001100 從低位到高位的順序,第一個1出現在第三位。 版本一:
狐貍找兔 算法分析
根據 反向 麻煩 求余 簡單 循環 tdi c程序 如果 題目: 圍繞著山頂有10個洞,一只兔子和一只狐貍住在各自的洞裏,狐貍總想吃掉兔子,一天兔子對狐貍說,你想吃我有一個條件,你先把洞編號1到10,你從第10洞出發,先到第1號洞找我,第二次隔一個洞找我,第三次隔兩個洞找我