數據結構前言

數據結構

數據結構,一種程序設計優化的方法論。不只考慮到存儲的數據,同時也考慮到彼此之間的關係與運算,目的就是加快程序的執行速度、減小內存佔用的空間。python

​ 使用計算機解決問題,必須以計算機所能接受的模式來確認問題,而且要選用適當的算法來處理數據,這就是數據結構討論的重點。簡單來講,數據結構就是對數據和算法的研究。算法

數據的特性

按照計算機中所存儲和使用的對象,能夠將數據分爲兩大類:數組

1. **數值數據:**例如0,1,2,……,9所組成,能夠用運算符來進行運算的數據;
2. **字符數據:**例如+、*以及A、B、C等非數值數據。

按照數據在計算機程序設計語言中的存在層次來分,能夠分爲三大類:數據結構

  1. 基本數據類型(Primitive Data Type):模塊化

    不能以其餘類型來定義的基本數據類型,或成爲標量數據類型,幾乎全部的程序設計語言都會爲標量數據類型提供一組基本數據類型,在python中的基本數據類型包括整型、浮點型、布爾類型和字符類型函數

  2. 結構數據類型(Structured Data Type):oop

    也成爲虛擬數據類型(Virtual Data Type),是一種比基本數據類型更高一級的數據類型,例如字符串(string)、數組(array)、指針(pointer)、列表(list)、文件(file)等。學習

  3. 抽象數據類型(Abstract Data Type):優化

    比結構數據類型更高級,是指一個數學模型以及定義在此數學模型上的一組數學運算或操做。ADT在計算機中用於表示一種「信息隱藏」的程序設計思想以及信息之間的某一種特定的關係模式。例如,堆棧(stack)就是一種典型的數據抽象類型,它具備後進先出(last in, first out)的數據操做方式。編碼

算法

​ 數據結構與算法是程序設計實踐中最基本的內涵。程序可否快速高效地完成預約的任務,取決因而否選對了數據結構,而程序是否能清除正確地把問題解決,則取決於算法

數據結構加上算法等於可執行程序。

​ 在韋氏詞典中,算法被定義爲「在有限步驟內解決數學問題的程序」。

算法的條件

| 算法的特性 | 內容與說明                                    |
| ---------- | --------------------------------------------- |
| 輸入       | 0個貨多個輸入數據,輸入必須有清楚的描述與定義 |
| 輸出       | 至少有一個輸出結果,不能夠沒有輸出結果        |
| 明確性     | 每個指令或步驟必須的簡潔明確的              |
| 有限性     | 在有限步驟後必定會結束,不會產生無限循環      |
| 有效性     | 步驟清除且可行,能計算而求出答案              |

算法和過程的區別,與流程圖的關係

​ 過程不必定要知足有限性的要求,如操做系統或機器上運行的過程,除非宕機,不然永遠在等待循環(waiting loop)中,這就違反了算法的有限性。

​ 只要是算法就能使用過程流程圖來表示。可是反過來,過程沒法用算法來描述,由於過程流程圖能夠包含無限循環。

程序設計

​ 數據結構與算法必須經過程序(program)的轉換才能真正有計算機系統來執行。

程序,是由合乎程序設計語言的語法規則的指令所組成的,而程序設計的目的就是經過程序的編寫與執行來實現用戶的需求。

程序的開發流程

  • 可讀性高:閱讀與理解至關容易。
  • 平均成本低:成本考慮不侷限於編碼的成本,還包括執行、編譯、維護、學習、調試與往後更新等成本。
  • 可靠度高:鎖邊寫出來的程序代碼穩定性高,不容易產生邊界效應。
  • 可編寫性高:針對需求所編寫的程序相對容易。

結構化程序設計

「由下而上」,是指先編寫整個程序需求中最容易的部分,在逐步擴大來完成整個程序。

「由上而下」,是將整個程序需求從上而下、由大到小逐步分解成較小的單元,或稱爲「模塊」,這樣能夠針對各個模塊分別開發,能夠減輕設計者負擔,可讀性較高,也便於往後維護。

結構化程序設計的核心精神就是「由上而下設計」與「模塊化設計」。

​ 一般,「結構化程序設計」具備3種控制流程。順序結構、選擇結構和重複結構。

面向對象程序設計

​ 面向對象程序設計(Object-Oriented Programming, OOP),認定每個對象是一個獨立的個體,而每一個獨立個體有其特定的功能。面向對象程序設計的重點是強調程序的可讀性、重複使用性與擴展性

​ 面向對象的三個特性:封裝性、繼承性和多態性

封裝性:利用「類」來實現「抽象數據類型」。類是一種用來具體描述對象狀態與行爲的數據類型,也能夠當作是一個模型,按照這個模型所產生的實例被稱爲對象。

繼承性:面向對象程序設計語言中強大的功能之一,容許程序代碼的重複使用,同時能夠表達樹形結構中父代與子代的遺傳現象。

多態性:面向對象設計的重要特性,可讓軟件在發展和維護時達到充分的延伸性。簡單地說,多態最直接的定義就是讓具備繼承關係的不一樣類 別對象能夠調用相同名稱的成員函數,併產生不一樣的反應結果。

相關文章
相關標籤/搜索