【數據結構與算法Python實踐系列】0 序

數據結構與算法-序

  • 數據結構和算法這門計算機必修課厲來在哪個學校,都是無比乏味和催人入睡的。
  • 但是,我會以生活中的場景來講述這門課程。

1. 什麼是數據結構呢?

  • 數據結構是一門研究非數值計算的程序設計問題中的操作對象,以及它們之間的關係和操作相關問題的學科。
  • 程序設計=數據結構+算法
  • 數據結構就是數據元素相互之間存在的一種或多種特定的關係的集合。

邏輯結構和物理結構
傳統上,我們把數據結構分爲邏輯結構和物理結構。

  • 邏輯結構:是指數據對象中數據元素之間的相互關係,也是我們今後最需要關注和討論的問題。
  • 物理結構:是指數據邏輯結構在計算機中的存儲形式。

1.1. 邏輯結構

1.1.1. 集合結構

集合結構中的數據元素除了同屬於一個集合外,它們之間沒有任何關係。
**找社區的圖**

1.1.2. 線性結構

線性結構中數據元素之間是一對一的關係。
**找排隊,堵車的圖**

1.1.3. 樹形結構

樹形結構中的數據元素之間存在一種一對多的層次關係。
**找傳銷金字塔的圖**

1.1.4. 圖形結構

圖形結構的數據元素是多對多的關係。
在這裏插入圖片描述

1.2. 物理結構

  • 根據物理結構的定義,我們實際上研究的就是如何把數據元素存儲到計算機的存儲器中。
  • 存儲器重要是針對內存而言的,像硬盤、軟盤、光盤等外部存儲器的數據組織通常用文件結構來描述。
  • 數據元素的存儲結構形式有兩種;順序存儲和鏈式存儲。

1.2.1. 順序存儲結構

是把數據元素存儲在地址連續的存儲單元裏,其數據間的邏輯關係和物理關係是一致的。
**醫院排隊,火車  描述場景 及優劣**

1.2.2. 鏈式存儲結構

是把數據元素存放在任意的存儲單元裏,這組存儲單元可以是連續的,也可以是不連續的。
在這裏插入圖片描述

2. 什麼是算法呢?

  • 算法是解決特定問題求解步驟的描述,在計算機中變現爲指令的有限序列,並且每條指令表示一個或多個操作。

2.1. 怎麼樣的解決問題方案才稱爲算法?

算法必須具備五個重要條件:

  • 有窮性:算法的指令或者步驟的執行次數和時間都是有限的。沒有無限循環,且不返回答案的情況。
  • 確切性:算法的指令或步驟都有明確的定義。
  • 輸入:有相應的輸入條件來刻畫運算對象的初始情況。
  • 輸出:一個算應有明確的結果輸出,經過有限次的反覆一定能到達結束條件等方法證明。
  • 可行性:算法的執行步驟必須是可行的。

2.2. 算法的性能評價

算法的效率作爲判斷算法優劣的標準。

一個算法的優劣往往通過算法複雜度來衡量,算法複雜度包括時間複雜度和空間複雜度兩個方面。其作用:時間複雜度是指執行算法所需要的計算工作量;而空間複雜度是指執行這個算法所需要的內存空間。(算法的複雜性體現在運行該算法時的計算機所需資源的多少上,計算機資源最重要的是時間和空間(即寄存器)資源,因此複雜度分爲時間和空間複雜度)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章