演算法分析(1) 增長數量級分類總結

2021-10-11 20:05:39 字數 986 閱讀 3196

3 綜述

實現演算法一般使用以下幾種結構性原語:

常數級別

對數級別

線性級別

線性對數級別

平方級別

立方級別

指數級別

常見的增長數量級是基礎,與之對應的演算法在演算法分析設計中往往是基礎性的數學模型,讀者可以收藏一下下(感激!!!)

常見數量級

與之對應的模型及演算法

常數級別

普通語句,例如普通的加減運算

對數級別

二分策略,二分查詢

線性級別

迴圈操作,max操作

線性對數級別

分治,歸併排序

平方級別

兩層迴圈,檢查全部元素對

立方級別

三層迴圈,檢查全部三元組

指數級別

窮舉查詢,檢查所有子集

執行時間為常數級別的程式表示他完成程式所需的操作次數一定,這樣的程式段的執行不受n的影響,其實大部分基本操作都是常數級別的。

不應該忽略基礎操作對整體演算法的影響,單並不止於貪心處處使用基本操作優化演算法。

對數級別的程式一般比常數級別的程式執行時間短。

對數底數與增長數量級無關,原因也很簡單,因為不同底數在描述演算法過程中僅僅是乙個常數

所以在底數級數中一般使用logn描述

線性級別的數量級的增長與n成正比,但是不一定是一維的迴圈,比如常規輸入資料的過程也是線性級別的。

線性對數級別意指執行時間與規模n

nn成nlo

gnnlogn

nlog

n關係的程式,與對數級別相同,數量級與底數無關。

這兩中乙個是巢狀的兩層迴圈和三層迴圈。

指數級別的程式不適合執行需求較大的程式,但是在操作步驟較少的模型中依舊具有較為重要的地位。讀者可以在我後續的文章中進行體會。

演算法分析中的增長數量級和近似函式

描述 近似函式 調和級數求和 hn 1 1 2 1 3 1 4 1 n lnn 等差數列求和 1 2 3 4 n n 2 等比數列求和 1 2 4 8 2 2 斯特靈公式 lgn lg1 lg2 lg3 lg4 lgn nlgn 描述增長的數量級 典型 說明舉例 常數級別 1a b c 完成任務所需...

演算法分析1

最近學校開設了演算法課,大一的時候都沒有好好學,現在惡補一下。會把一些比較好玩的題寫上來分享,希望大家有更好的解法可以告訴我。1.蠻力法求解問題 猴子到森林裡採香蕉,森林距離家裡100公尺,猴子的揹包最多可以放下100個香蕉。但是,貪吃的猴子每行動1公尺需要吃1個香蕉,假設森林裡香蕉足夠多的情況下,...

常見演算法時間函式的增長趨勢分析

資料結構教程 第5版 上機實驗題1 實驗題2 目的 理解常見演算法時間函式的增長趨勢對以下函式用c 程式執行觀察其變化 log2 n n n n log2 n n n n 3 2 n n 1 從值的變化角度分析 s code 2 從消耗的時間的角度分析 介紹乙個計時函式 includeclock t...