資料結構-基本概念和時空複雜度
歸納
- 研究資料元素之間的客觀聯絡(邏輯結構)
- 研究具有某種邏輯關係的資料在計算機儲存器(儲存結構)
- 研究如何在資料的各種關係(邏輯關係和物理關係)的基礎上對資料實施一系列有效的基本操作(演算法)
- 分析演算法的時間複雜度和空間複雜度
一、概述
1.資料的邏輯結構與儲存結構的基本概念;
資料結構的定義和一些基礎概念
資料結構的定義:資料元素之間的聯絡稱為結構,資料結構就是具有結構的資料元素合集。
資料結構為二元組:DataStructure=(D,R)
D:Data,資料元素的有限合集,某一個資料物件
R:Relation,Data的關係合集
邏輯結構
資料元素之間具有的邏輯關係(結構)
線性關係:如線性表,陣列,堆疊,佇列,串,檔案等
非線性關係:樹,二叉樹,圖,集合等
儲存結構
具有某種邏輯結構的資料,在計算機儲存器中的儲存方式(儲存映像2)
順序儲存結構:用一組地址連續的儲存單元依次存放資料元素,
資料元素之間的邏輯關係通過元素地址直接反映。鏈式儲存結構:用一組地址任意的儲存單元依次存放資料元素,資料元素之間的邏輯關係通過指標間接的反映。
索引儲存結構:利用資料元素索引關係來確定資料元素的儲存位置,由資料元素本身與索引兩部分組成
特點:諸如查詢,插入,刪除等操作的時間效率較高,但是儲存空間開銷大
- 雜湊儲存結構:(雜湊)通過事先準備好的雜湊函式關係與處理衝突的方法來確定元素的儲存位置
特點:諸如查詢、刪除和插入的時間效率較高,主要缺點是確定好的雜湊關係比較困難,即好的hash function
2.演算法的定義、基本性質以及演算法分析的基本概念,包括採用大O形式表示時間複雜度和空間複雜度。
演算法的定義
演算法的定義:演算法是用於解決某個特定課題的指令集合。演算法就是解決問題的方法。演算法是由人們組織起來準備加以實施的一系列有限的基本步驟。
演算法的性質
一個完整的演算法應該滿足下面五個基本性質:
- 輸入
- 輸出
- 有窮性
- 確定性
- 有效性
演算法分析
演算法分析是指對演算法質量優劣的評價。
- 正確性
- 時間複雜度
- 空間複雜度
- 其他:演算法可讀性,可移植性,易測試性等等
時間複雜度
一個程式在計算機中執行的時間多少與很多因素有關
- 問題的規模
- 編譯程式功能的強弱以及所產生的機器程式碼質量的優劣
- 機器執行一條指令的時間長短
- 程式中語句的執行次數
頻度統計法
以語句的執行次數的多少作為演算法的時間量度的分析方法稱為頻度統計法
整個演算法的頻度是指演算法中所有的語句頻度之和
關於符號O的定義
當且僅當存在正數和,使得對所有
成立,則稱函式與同階,或者說與同一個數量級,記作
稱上式為演算法的時間複雜度,或者成該演算法的時間複雜度為\(O(g(n))\).
其中,n為問題的規模大小的度量。
[例子:矩陣乘法]
void function(int A[][n], int B[][n], int C[][n], int n)
{
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
C[i][j] = 0;
for(k=0;k<n;k++)
C[i][j] = C[i][j] + A[i][k]*B[k][j];
}
}
以上演算法的時間複雜度為.
常見覆雜度排序
表示演算法複雜度為常量,不隨我呢提規模的大小而改變
相關文章
- 資料結構:時間複雜度資料結構時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- JavaScript 資料結構與演算法之美 - 時間和空間複雜度JavaScript資料結構演算法複雜度
- 資料結構-邏輯關係&物理關係、時間複雜度、空間複雜度、順序表資料結構時間複雜度
- 自學 資料結構四月二十一日_時間複雜度&空間複雜度資料結構時間複雜度
- 時間複雜度O(n)和空間複雜度時間複雜度
- 資料結構與演算法(一):帶你瞭解時間複雜度和空間複雜度到底是什麼?資料結構演算法時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度跟空間複雜度時間複雜度
- 前端資料結構---複雜度分析前端資料結構複雜度
- 資料結構與演算法——時間複雜度資料結構演算法時間複雜度
- 資料結構 之 演算法時間複雜度資料結構演算法時間複雜度
- 資料結構基礎學習之時間複雜度分析資料結構時間複雜度
- 122 演算法的時間複雜度和空間複雜度詳解演算法時間複雜度
- 演算法與資料結構--空間複雜度O(1)遍歷樹演算法資料結構複雜度
- 那些年忽略的知識:時間複雜度和空間複雜度詳解時間複雜度
- PHP 演算法基礎----時間複雜度和空間複雜度(轉載)PHP演算法時間複雜度
- 資料結構與演算法——複雜度分析資料結構演算法複雜度
- 時間與空間複雜度分析複雜度
- 資料結構與演算法:演算法的時間複雜度資料結構演算法時間複雜度
- 易被忽略的知識點之 ---- 各種時間複雜度和空間複雜度時間複雜度
- 資料結構與演算法學習-複雜度分析資料結構演算法複雜度
- 最詳細的解說—時間和空間複雜度複雜度
- 一文講透演算法中的時間複雜度和空間複雜度計算方式演算法時間複雜度
- 我們常說的演算法時間複雜度和空間複雜度到底是什麼?演算法時間複雜度
- 資料結構與演算法整理總結---演算法複雜度資料結構演算法複雜度
- 1. 時間複雜度和空間複雜度 (7 天掌握演算法面試必考知識點)時間複雜度演算法面試
- 《資料結構與演算法之美》複雜度分析(下):淺析最好、最壞、平均、均攤時間複雜度 (讀後感)資料結構演算法時間複雜度
- 複雜的資料結構設計求解?資料結構
- 資料結構與演算法分析——開篇以及複雜度分析資料結構演算法複雜度
- 資料結構與演算法之美-02複雜度分析(下)資料結構演算法複雜度
- 資料結構基本概念和術語資料結構
- 資料結構-基本概念和術語資料結構
- 衡量演算法的效能-時空複雜度分析演算法複雜度
- 冰與火之歌:「時間」與「空間」複雜度複雜度
- 日常分享:關於時間複雜度和空間複雜度的一些優化心得分享(C#)時間複雜度優化C#
- 判斷連結串列是否為迴文結構,空間負責度為O(1),時間複雜度為O(n)時間複雜度
- 資料結構與演算法-複雜度分享&大 O 演算法資料結構演算法複雜度