不知道你有沒有這樣的疑惑?爲什麼一說數據結構或者算法,它們總是會同時出現,這不應該是兩門課嗎?爲什麼要整合到一起呢?
接下來我們就帶着問題去了解一下數據結構和算法之間的關係。
一、數據結構和算法之間的關係
什麼是數據結構?什麼是算法?
你去百度肯定能得到一堆結果,但這些搜索出來的結果根本就不是人能看懂的。所謂定義就是把所有人能看懂的問題說成誰也看不懂的詞。
其實,這樣是沒辦法的事。爲了定義的明確和嚴謹,就得加很多限制條件,這樣就不會讓定義模棱兩可,但是這樣做的結果就是誰也看不懂。
下面我們就試着還原數據結構和算法最本質的含義,能讓所有人都理解的概念。
數據結構是指一組數據的存儲方式。
算法是指操作這組數據的一種方法。
舉個例子:
圖書館的藏書一般是根據書籍的類別和編號進行存放,這種存放方式就是數據結構。
那我們如何來找到其中的一本書呢?有很多種辦法,你可以從進門開始一本一本往後找。也可以按照書籍的類別和編號,是計算機、人文、科學、文學、經濟學。。。來定位書架,然後再依次查找。這種查找書籍的方法就是算法。
接下來就可以回答我們開頭提的問題了,爲什麼一說數據結構或者算法,它們總是會同時出現呢?
這是因爲,數據結構和算法是相輔相成的。數據結構是爲算法服務的,算法要作用在特定的數據結構之上。 因此,我們無法孤立數據結構來講算法,也無法孤立算法來講數據結構。
二、數據結構的分類
數據結構從大的層面可分爲邏輯結構和物理結構。邏輯結構是指數據元素之間的關係。物理結構是指數據在磁盤上存儲的方式。
邏輯結構
-
集合結構
-
線性結構
-
樹形結構
-
圖形結構
物理結構
-
順序存儲
-
鏈式存儲
三、代碼實現
本質上學習數據結構和算法是可以忽視語言的,因爲所有的編程語言都能實現。但是這裏強烈建議使用 C語言
進行算法實現,因爲 C語言
可以讓你更深入的理解數據在內存中是如何進行存儲的。當你對 C語言
有一定的理解之後,你就會發現其他都是什麼辣雞,只有 C語言
寫纔是最爽的, C語言
永遠滴神~