資料結構和演算法

2021-08-14 20:30:37 字數 2370 閱讀 9736

資料結構和演算法

什麼是資料結構

概念

官方定義:

資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。

我的理解:

程式設計 = 資料結構 + 演算法

常用結構

陣列

在程式設計中,為了處理方便, 把具有相同型別的若干

變數 按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為

陣列 。在

c語言 中, 陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列、字元陣列、

指標陣列

、結構陣列等各種類別。

是只能在某一端插入和刪除的特殊

線性表 。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後乙個資料被第乙個讀出來)。

佇列

一種特殊的

線性表 ,它只允許在表的

前端 (front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列是按照「先進先出」或「後進後出」的原則組織資料的。佇列中沒有元素時,稱為空佇列。

鍊錶

是一種物理儲存單元上非連續、非順序的儲存結構,它既可以表示線性結構,也可以用於表示非線性結構,資料元素的

邏輯順序

是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時

動態 生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。

是包含n(n>0)個結點的有窮集合k,且在k中定義了乙個關係n,n滿足 以下條件:

(1)有且僅有乙個結點 k0,他對於關係n來說沒有前驅,稱k0為樹的根結點。簡稱為根(

root

)。  (2)除k0外,k中的每個結點,對於關係n來說有且僅有乙個前驅。

(3)k中各結點,對關係n來說可以有m個後繼(m>=0)。

圖是由結點的有窮集合v和邊的集合e組成。其中,為了與樹形結構加以

區別 ,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。

在電腦科學中,堆是一種特殊的樹形資料結構,每個結點都有乙個值。通常我們所說的堆的資料結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是乙個堆。

雜湊表

若結構中存在關鍵字和k相等的記錄,則必定在f(k)的儲存位置上。由此,不需比較便可直接取得所查記錄。稱這個對應關係f為雜湊函式(hash function),按這個思想建立的表為

雜湊表 。

演算法

演算法的概念

是指解題方****而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。

在我看來,演算法就是求解乙個問題所需要的步驟所形成的解決方法,每一步包括乙個或者多個操作。無論是現實生活中還是計算機中,解決同乙個問題的方法可能有很多種,在這n多種演算法中,肯定存在乙個執行效率最快的方法,那麼這個方法就是最優演算法。

演算法的特性

演算法具有五個基本特徵:輸入、輸出、有窮性、確定性和可行性。

演算法的設計要求

要設計乙個好的演算法,需要考慮以下4個特性

正確性

廢話,誰會設計乙個不能夠解決問題的方法。

可讀性

指演算法無論是從設計思路上,還是從注釋方面,都要能夠保證演算法是可讀的,也就是可以被其他人員能夠讀懂的。其實也是廢話,這是乙個優秀的程式設計師必備的。

健壯性

通俗的講,乙個好的演算法應該具有捕獲異常/處理異常的能力。另外,對於測試人員的壓力測試、邊界值測試等刁難的測試手段,演算法應該能夠輕鬆的扛過去。

時間效率高和儲存量低

這其實是兩個概念,時間效率就是指的時間複雜度,儲存量就是指的空間複雜度。

資料結構和演算法

判斷乙個演算法的效率時,函式中的常數和其它次要項常常可以忽略,而更應該關注主項 最高項 的階數。演算法時間複雜度的定義 在進行演算法分析時,語句中的執行次數t n 是關於問題規模n的函式,進而分析t n 隨n的變化情況並確定t n 的數量級。演算法的時間複雜度,也就是演算法的時間量度,記作 t n ...

資料結構和演算法

程式是什麼?好多書上都寫著 程式 資料結構 演算法。可是怎麼去理解呢?好多程式設計人員對資料結構和演算法說不上熟悉,因為在他們所從事的工作中很少用到這些知識點。但並不表示他們不重要。還有一些人是這樣的想法 大公司才會注重這些知識點,小公司可能就不注重了。寫這篇文章之前我也是持這種想法的。但是,此時此...

資料結構和演算法

一 資料結構 1.概念 資料結構就是資料之間的結構關係,或者理解成資料元素之間存在的一種或者多種特定關係的集合,在傳統上資料結構分為邏輯結構與物理結構 1 邏輯結構 只反映資料元素之間的邏輯關係的資料結構,其中的邏輯關係是指資料元素之間的前後關係,而與他們在計算機中的儲存位置無關,有以下四類 集合結...