最壞情況與平均情況
最壞情況時間是一種保證,那就是執行時間不會再壞了。在應用中,這是一種最重要的需求,通常,除非特別指定,我們提到的執行時間都是最壞情況的執行時間。
平均執行時間是所有情況中最有意義的,因為他是期望的執行時間。
一般在沒有特殊說明的情況下,都是指最壞時間複雜度。
演算法空間複雜度
演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公式記作:
s(n = o(f(n)),n為問題的規模,f(n)為語句關於n所佔儲存空間的函式。
演算法總結回顧
演算法的定義:解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作
演算法的特性:輸入輸出 有窮性 確定性 可行性
演算法設計的要求:正確性 可讀性 健壯性 時間效率高和儲存量低
演算法效率的度量方法:事後統計方法 事前分析估算方法
函式的漸進增長:給定兩個函式f(n)和g(n),如果存在乙個整數n,使得對於所有n >n,f(n) 總是比g(n)大,那麼,我們說f(n)的增長漸進快於g(n)
推導大o階方法
1.用常數1取代執行時間中的所有加法常數。
2.在修改後的執行次數函式中,只保留最高端項
3.如果最高端項存在且不是1,則去除與這個項相乘的常數
得到結果就是大o階
常見的時間複雜度所耗時間的大小排列:
o(1)< o(logn) < o(nlogn) < o(n^2) < o(n^3) < o(2^n) < o(n!)
程式設計總結(五)資料結構
0x00 前言 本部分總結了幾種常見的資料結構的c 實現,預計會包括線性表,廣義表,棧,佇列,樹,二叉樹,圖等等。0x01 線性表 1 順序表示 順序表優點 隨機訪問 缺點 插入刪除需要移動大量的元素 templateclass array array int n void insert int i...
資料結構與演算法(五)
雙端鍊錶和雙向鍊錶 一.雙端鍊錶 1.什麼是雙端鍊錶 鍊錶中儲存著對最後乙個鏈結點的引用的鍊錶 2.從頭部進行插入 要對鍊錶進行判斷,如果為空則設定尾結點為新新增的結點。3.從尾部進行插入 如果鍊錶為空,則直接設定頭結點為新新增的結點,否則設定尾結點的後乙個結點為新新增的結點。4.從頭部進行刪除 判...
資料結構與演算法(五)
三根針xyz,x上64個圓盤 設計思路 if n 1時,x z else 執行n 1的操作,直到n 1 1 由零個或多個字元組成的有限序列 是用一組位址連續的儲存單元來儲存串中的字串行,按照預定義的大小,為每個定義的字串變數分配乙個固定長度的儲存區,一般用定長陣列來定義 一般用順序儲存 樸素的模式匹...