数据结构基础概念及算法概念
1.數據:
數據是能輸入計算機且能夠被計算機處理的各種符號的集合。
(1)是信息的載體
(2)是對客觀事物符號化的表示
(3)能被計算機識別,儲存和加工
包括:
(1)數值型數據:整數實數等;
(2)非數值型:文字,圖像,圖行,聲音等
2.數據元素:
是數據的基本單位,也稱元素,記錄,結點或者頂點(比如職工管理信息一個職工的所有信息,姓名職工號性別的集合);
3.數據項:是數據元素的基本組成單位(姓名或者性別等)
4.數據對象:就是性質相同的數據元素的集合(性質相同就是數據元素具有相同數量和類型的數據項)
5.數據結構:是指相互之間存在一種或者多種特定關系的數據元素的集合
數據結構的內容:
(1)數據結構之間的邏輯關系也稱邏輯結構(描述數據元素之間的邏輯關系與數據存儲無關,獨立于計算機)
(2)數據元素及其關系在計算機內存中的表示(又稱為映像),稱為數據的物理結構或數據的存儲結構
(3)數據的運算和實現,對數據元素可以施加操作以及這些操作在相應的存儲結構上的實現。
物理結構是邏輯關系的映像與元素本身的映像
邏輯結構是數據元素的抽象,物理結構是數據結構的實現
6.邏輯結構的種類:
第一種歸類:
(1)線性結構:有且僅有一個開始和一個終端結點,并且最多有一個直接前驅和后繼。
(列如線性表,棧,隊列,串)
(2)非線性結構:一個結點可能有多個前驅和后繼(樹和圖)
第二中歸類:
7.數據的四種基本存儲結構:
(1)順序存儲結構:用一段連續的存儲單元依次存儲數據元素,數據元素之間的邏輯關系由元素的存儲位置決定。(C語言數組)
(2)鏈式存儲結構:用任意的存儲單元存儲數據元素,數據元素之間的邏輯關系用指針表示(C語言鏈表)
(3)索引存儲結構:
(4)散列存儲結構:
8.數據類型的作用:
(1)約束變量或者常量的取值范圍
(2)約束變量或者常量的操作
9.抽象數據類型(ADT):
抽象:是指抽取出事物具有的普遍性的本質
10.算法時間效率的度量(主要介紹事前分析估測的方法):
首先算法五個基本特性:輸入,輸出,有窮性,確定性,可行性。
首先算法是一定要有輸出的,可以沒有輸入。有窮指算法在執行有限的步驟后自動結束而不會出現無限循環,并且每個步驟都能在有限的時間內完成。確定性指每一步都有確定含義不會出現二義性。可行性是指算法的每一步都是可行的,每一步都能夠通過執行有限次數完成。
算法的設計要求:
正確性,可讀性(易懂),健壯性(在輸入錯誤指令時算法能進行相應處理而不是報錯或者莫名其妙的結果),高效率和低存儲量需求
(1)算法的運行時間T(n)=每條語句的執行次數*該語句執行一次所需要的時間
(2)算法漸進時間復雜度:若有某個輔助函數發T(n)/f(n)的極限值等于不為0的常數,則二者是同數 量級函數記作T(n)=Of(n)稱Of(n)為算法漸進時間復雜度(O)是數量級符號,簡稱時間復雜度
(3)算法的基本語句:執行次數最多的語句。對算法運行時間貢獻最大的語句。算法中重復執行次數和算法的執行時間成正比的語句
11.分析算法時間復雜度的基本方法:
那么如何推導O階
(1)用常數1取代運行時間中所有加法常數
(2)在修改后的運行次數函數中只保留最高階項,舍去所有低階項
(3)如果最高階項存在且不是1,則去除與這個項相乘的常數得到的就是O階(去除最高項系數)。
例1:
例二:
例三:
有些時候重復的次數會隨著問題的不同而不同,比如從數組中查找某一個元素,最快一次就會查找到,最慢就是查不到或者剛好最后一個
一般計算所有情況的平均值,這種時間復雜度的計算方法稱為平均時間復雜度,還有是最壞時間復雜度,一般再沒說明的情況下都是指最壞情況復雜度
11.各空間復雜度的比較;
12.漸進空間復雜度(重點是時間復雜度問題):
S(n)=Of(n);
算法要占據的空間:
(1)算法本身要占據的空間(輸入輸出指令變量等)
(2)算法要使用的輔助空間(如果輸入數據所占空間只取決于問題本身和算法無關,這樣只需要分析該算法的輔助空間相對于輸入的數據是不是一個常數,如果是那么稱算法為原地工作,空間復雜度為O(1)
下面這個例子:
以上例子,在原有基礎地數據外,要用一個輔助t進行交換值(只用到這一個空間),在原數組有n個元素地情況下,空間復雜度為1.但是對于第二種方法則是有一個輔助數組,那么原數組有多少個值,輔助數組也要有多少空間來存儲,所以與原數組有多少值有關,在原數組有n個元素地情況下,那么
空間復雜度為n;
13.函數的漸近增長:
總結
以上是生活随笔為你收集整理的数据结构基础概念及算法概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++易错点总结
- 下一篇: 关于静态局部全局变量