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