資料結構與演算法學習之 基礎概念

2021-10-23 06:10:35 字數 1868 閱讀 1355

@[toc] 資料結構與演算法學習之 基礎概念

資料結構:是指相互之間存在一種或多種特定關係的資料元素的集合用計算機儲存、組織資料的方式。資料結構分別為邏輯結構、(儲存)物理結構和資料的運算三個部分。

資料結構的主要任務是通過分析資料物件的結構特徵,包括邏輯結構及資料物件之間的關係,然後把邏輯結構表示成計算機課實現的物理結構,從而便於計算機處理。

1.資料結構概念

(2)資料元素(data element)是資料的基本單位。例如一張學生統計表。

(3)資料項(data item)組成資料元素的最小單位。例如一張學生統計表,有編號、姓名、性別、籍貫等資料項。

(4)資料物件(data object)是性質相同的資料元素的集合,是資料的乙個子集。例如正整數n=。

(5)資料結構(data structure)是資料的組織形式,資料元素之間存在的一種或多種特定關係的資料元素集合。

(6)資料型別(data type)是按照資料值的不同進行劃分的可操作性。在c語言中還可以分為原子型別和結構型別。原字型別是不可以再分解的基本型別,包括整型、實型、字元型等。結構型別是由若干個型別組合而成,是可以再分解的。

2.資料邏輯結構

1)集合結構:集合的資料元素沒有其他關係,僅僅是因為他們擠在乙個被稱作「集合」的盒子裡。

(2)線性結構:線性的資料元素結構關係是一對一的,並且是一種先後的次序,就像a-b-c-d-e-f-g·····被一根線穿連起來。

(3)樹形結構:樹形的資料元素結構關係是一對多的,這就像公司的部門級別,董事長-ceo\cto-技術部\人事部\市場部…。

(4)圖結構:圖的資料元素結構關係是多對多的。就是我們常見的各大城市的鐵路圖,乙個城市有很多線路連線不同城市。

3.演算法

演算法(algorithm)是解決特定問題求解步驟的描述,在計算機中表現為有限的操作序列。在資料型別建立起來之後,就要對這些資料型別進行操作,建立起運算的集合即程式。運算的建立、方法好壞直接決定著電腦程式原型效率的高低。

(1)資料結構和演算法的關係

演算法的五大特性

有窮性,是指演算法在執行有限的步驟之後,自動結束而不是出現無限迴圈,並且每乙個步驟在可接受的時間內完成。

確定性,是指演算法執行的每一步驟在一定條件下只有一條執行路徑,也就是相同輸入只能有乙個唯一的輸出結果。

可行性,是指演算法每一步驟都必須可行,能夠通過有限的執行次數完成。

輸入,是指演算法具有零個或多個輸入。

輸出,是指演算法至少有乙個或多個輸出。

4.時間複雜度

在進行演算法分析時,語句總是執行次數 t(n) 是關於問題規模 n 的函式。進而分析次數t(n)隨規模n的變化情況並確定t(n)的數量級。演算法的時間複雜度就是演算法的時間度量,記作t(n) = o(f(n))。它表示隨問題規模n的增大,演算法的執行時間的增長率和f(n)的增長率相同,稱作演算法的漸進時間複雜度,簡稱為時間複雜度。其中,f(n)是問題規模n的某個函式。

演算法的時間複雜度是衡量乙個演算法好壞的重要指標。一般情況下,隨著規模n的增大,次數t(n)的增長較慢的演算法為最優演算法。常見時間複雜度從小到大依次排列:o(1) < o(log2n) < o(n) < o(n²)5.空間複雜度

空間複雜度(space complexity)作為演算法所需儲存空間的量度,記做s(n) = o (f(n))。其中,n為問題的規模;f(n)為語句關於n的所佔儲存空間的函式。

一般情況下,乙個程式在機器上執行時,除了需要儲存程式本身的指令、常數、變數和輸入資料外,還需要儲存對資料操作的儲存單位。若輸入資料所佔空間只取決於問題本身,和演算法無關,這樣只需要分析該演算法在實現時所需的輔助單元即可。若演算法執行時所需的輔助空間相對於輸入資料量而言是個常量,則稱此演算法為原地工作,空間複雜度為o(1)。

資料結構與演算法學習

我想重新學習一下資料結構與演算法,打好基礎。to measure is to know.我們用演算法複雜度t n 來表示演算法的效率,效能。t n 的取值 所有問題規模為n的問題例項中,將他們的計算成本進行總體的比較,取出最壞情況下的值。有幾點需要catch,1.演算法執行的時間,會根據程式語言,作...

java資料結構與演算法學習筆記(1) 概念

今天覆習了資料結構,才發現很多概念都不懂,或是沒有分清楚。晚上跟mzd討論的時候,發現我們都對資料結構的某些地方都存在著誤解。因此深感弄清概念的重要,至少弄清概念可以應付二級 資料結構 資料結構是計算機儲存 組織資料的方式。資料元素相互之間的關係 稱為結構。有四類基本結構 集合 線性結構 樹形結構 ...

資料結構與演算法學習之演算法入門筆記

關於計算 物件 規律 技巧。目標 高效 低耗。computer science computing science演算法 特定計算模型下,旨在解決特定問題的指令序列。輸入 輸出 正確性 確定性 可行性 有窮性。hailstone序列目前無法證明有窮性或無窮性。程式 不等於 演算法 死迴圈 有窮性 好...