數據結構與集合的不解之緣,你了解多少?
本篇文章將簡要介紹數據結構,讓讀者了解它們在計算機中以何種結構方式存在。那么,什么是數據結構呢?下面我們來詳細解釋。
數據結構
1.1 數據結構有什么用?
數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。
數據結構往往同高效的檢索算法和索引技術有關。這句話是啥意思呢?
我們舉個簡單的例子。就像金庸小說中所寫的,武功招式就相當于我們的算法,而數據結構就是我們的內功心法;而武功的高低,不僅僅是武功招式,更重要的是 學會的內功心法。就比如張無忌在學會九陽神功之后,就可以大戰六大門派。
而數據結構的學習,也會讓我們事半功倍。憑借著“數據結構+算法=程序”這句話,Pascal之父獲得了圖靈獎。
總結來說:
數據結構就是一種是將世界上各種數據轉化為計算機可以存儲和操作的形式,定義了邏輯結構如何在計算機上存儲,以及相關的基本操作。
算法是程序猿通過調用不同數據結構的基本操作,從而實現了數據的處理。
而這兩點使我們作為程序開發人員的必備基本功,不是一朝一夕就能成為絕世高手的,我們需要一步步去不斷的學習積累,積硅步以致千里。
1.2 常見的數據結構
在計算機學科中,數據結構是一門很重要的基礎學科,知識點很多。在這里我們不講那么多,只講述我們集合中用到的幾種數據結構,同學們可以下去自行學習更多的數據結構的知識。常用結構三個:數組、鏈表、紅黑樹。
我們分別來了解一下:
1)數組
數組的定義:
- 數組是相同類型數據的有序集合;
- 數組描述的是相同類型的若干個數據,按照一定的先后次序排列組合而成;
- 其中,每一個數據稱作一個數組元素,每個數組元素可以通過一個下標來訪問它們。
存儲思路:
所有數據存儲在連續的空間中,數組中的每個元素都是一個具體的數據。
數組的特點:
- 使用連續分配的內存空間;
- 一次申請一大段連續的空間,需要事先聲明最大可能要占的固定內存空間。
如下圖:
- 通過索引,查詢快
- 當給數組插入新元素時,數組中的a2,a3,a4整體后移,代價高。
- 如果插入元素時,數組長度,還要重新創建一個數組,然后循環賦值,代價高
優點:
設計簡單,讀取與修改表中的任意一個元素的時間都是固定的,速度快 。
缺點:
容易造成內存浪費;刪除或者插入數據需要移動大量數據,速度慢。
2)鏈表
每個數據單獨存在一小塊內存中,這個單元叫做節點,每個節點知道下一個節點的地址,叫做單向鏈表。每個節點既知道下一個節點地址,又知道上一個節點地址,叫做雙向鏈表。
鏈表的特點:
- 使用不連續的內存空間;
- 不需要提前聲明好指定大小的內存空間,一次申請一小塊,按需申請。
查詢元素,需要通過節點一次向后查找,直到查找到指定元素
增刪元素:只需修改連接節點的地址即可。
優點: 充分節省內存空間,數據插入和刪除方便,不需要移動大量數據。
缺點: 查詢數據必須按順序找到該數據,操作麻煩。
3)紅黑樹
簡單理解,就是一種類似于我們生活中樹的結構,只不過每個節點最多只有兩個葉子。計算機世界的樹,剛好與我們現實中的樹成鏡像相反,樹根在上,樹枝在下。二叉樹如下圖:
而我們要說的是二叉樹的一種比較有意思的叫做紅黑樹,紅黑樹本身就是一顆二叉查找樹。我們在這里只需要記住它的特點就可以非常方便的對樹中的所有節點進行排序和檢索。
小結
本文介紹了三種常用的數據結構:數組、鏈表和紅黑樹,以及這些數據結構在計算機中的重要意義。通過學習這些內容,我們可以逐步深入了解計算機世界。