數據結構:python
在考慮什麼是數據結構時,首先咱們先來看這麼一個需求:算法
假如如今要使用python的數據類型來保存《三國演義》裏面人物的信息,保存以後該如何最以快方式獲取每一個人物的相關信息了?數據結構
實際上,咱們在考慮這個問題時,就已經涉及到了數據結構相關的知識了。學習
在python中,咱們經常使用列表與字典來存儲數據,如今咱們就分析一下,若是咱們分別使用這兩種數據結構的時候,他們的算法效率那個會更好一點:spa
用列表保存數據:設計
要獲取列表裏面每一個任務的信息時,咱們就要去遍歷列表,他的時間複雜度爲:O(N)對象
用字典保存數據:隊列
在使用字典保存人物信息時,咱們可將人物的姓名做爲字典的鍵,人物信息做爲字典的值。進而查詢人物信息時,咱們能夠不用再去遍歷直接經過鍵就可 以快速找到人物對應的信息。 時間複雜度爲O(1)程序設計
咱們爲了解決問題,須要將數據保存下來,而後根據數據的存儲方式來設計算法,實現對數據的處理。通常數據的存儲方式不一樣就會致使須要不一樣的算法進處 理。咱們但願算法解決問題的效率越快越好,因而咱們就會考慮數據究竟如何保存的問題,這就是數據結構。效率
上面的問題中,咱們選擇python中的列表或者字典來存儲人物的信息。列表與字典就是python內建幫咱們封裝好的兩種數據結構。
概念:
數據是一個抽象的概念,將其進行分類後獲得程序設計語言中的基本類型(python中基本數據類型:int,float,char等)。數據元素之間不是獨立的,存在特定的關係,這些關係即是結構。數據結構指數據對象中數據元素之間的關係。
Python給咱們提供了不少現成的數據結構類型,這些系統本身定義好的,不須要咱們本身去定義的數據結構叫Python的內置數據結構,好比列表、元組、字典。
有些數據組織方式,Python系統裏面沒有直接定義,須要咱們本身去定義實現這些數據的組織方式,這些數據組織方式稱之爲Python的擴展數據結構,好比棧,隊列等。
數據結構與算法之間的區別:
經過前邊算法的介紹,與上邊數據結構的介紹,想必都對什麼是數據結構與算法有了清晰的認識,如今咱們來看一下算法與數據結構究竟有什麼不一樣:
數據結構只是靜態的描述了數據元素之間的關係。
高效的程序須要在數據結構的基礎上設計和選擇算法。
程序 = 數據結構 + 算法
總結:數據結構是算法實現的基礎,算法老是要依賴於某種數據結構來實現的。每每是在發展一種算法的時候,構建了適合於這種算法的數據結構。一種數據結構若是脫離了算法,那還有什麼用呢?實際上也不存在一本書單純的講數據結構,或者單純的講算法。固然二者也是有必定區別的,算法更加的抽象一些,側重於對問題的建模,而數據結構則是具體實現方面的問題了,二者是相輔相成的。
好了,今天要說的任務已經完成了。寫這篇文章目的主要有兩個,一是總結數據結構的基本知識,另外一個目的就是與以前談的算法進行一個聯繫與比較,能夠更深入的去理解他們在python中時怎麼存在與實現的。這篇文章,和上一篇同樣,都是很簡單很基本的東西,不過雖然簡單,可是對於初學數據的小白來講,確是必須掌握的技能。由於算法與數據結構始終會貫穿在python的每個地方,只有掌握這些算法思惟與數據結構,之後在python的學習中才會走的堅決,走的更遠。
後續還會更新這方面的東西,要是有興趣的,可加關注,會有更多精彩等着嘍