資料結構(二) 演算法的基本概念

2021-09-26 07:29:06 字數 1504 閱讀 4258

演算法採用的策略和方法

問題的輸入規模

編譯器所產生的**

計算機執行速度

時間複雜度和空間複雜度

通過計算演算法裡總的運算元量衡量演算法效率

因為演算法最終是由具體的計算機指令實現,每個指令在計算機cpu上執行的時間是固定的,這樣通過具體的n步就可以推導出演算法的複雜度

以下表為例,當程式執行相同的次數時不同的演算法執行的次數是不同的

在評估演算法的好壞時要注意:

判斷乙個演算法的效率時,往往只需要關注運算元量的最高次項,其它次要項和常數項可以忽略

在沒有特殊說明時,我們所分析的演算法的時間複雜度都是指最壞的時間複雜度

演算法效率嚴重依賴操作(operation)數量

在判斷時首先要關注運算元量的最高次項

運算元量的估算可以作為時間複雜度的估算

比如下面是關於演算法效率的計算:

常見的時間複雜度模型:

通過計算演算法的儲存空間來實現,即看程式對記憶體的需求

比如:

s(n) = o(f(n))

其中n為問題規模,f(n)為在問題規模為n時所占用的儲存空間的函式

大o表示法同樣適用於演算法的空間複雜度

注:當演算法執行時所需要的空間是常數時,空間複雜度為o(1)

例子:乙個陣列中存放了從1-1000的隨機整數,求陣列**現次數最多的那個數。

//統計字串**現次數最多的那個數

int main()

; int x[1000] = ;

int max=0;

//cout << sizeof(a)/sizeof(*a) << endl;

int len = sizeof(a) / sizeof(*a);

for (int i = 0; i < len; i++) //遍歷陣列求每個數字出現的次數,然後記錄下來

for (int i = 0; i < 1000; i++)//掃瞄陣列求最大數 }

for (int i = 0; i < len; i++) //輸出

資料結構 演算法基本概念

1 有窮性 2 確定性 3 可行性 4 輸入 5 輸出 1 時間複雜度 它定性描述演算法的執行時間。乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。乙個演算法中的語句執行次數稱為語句頻度或時間頻度,記為t n 時間複雜度又分為 最壞時間複雜度,平均時...

資料結構和演算法基本概念

版本號 2018 09 25 1 23 00 特別鳴謝兄弟提供的幫助 jun shibata 丶 sank 1 資料結構的定義是什麼?資料結構是計算機儲存 組織資料的方式。資料結構是指相互之間存在一種或多種特定關係的資料元素的集合。2 用自己的話簡單講講什麼是資料結構?一組資料的儲存結構 3 演算法...

資料結構與演算法基本概念

一 基本資料結構 基本資料結構的定義 特性 運算 演算法。基本資料結構的分類 邏輯結構 1 線性結構 線性表 棧 佇列 雙佇列 陣列 廣義表 串 2 非線性結構 樹 二叉樹 圖 網 儲存結構 1 順序儲存 向量 一維陣列 2 鏈式儲存 鍊錶 二 演算法 查詢 順序 折半 分塊 雜湊 二叉排序樹 排序...