這談的數據結構和算法2好基友[數據結構和算法]

在本文中,小烏龜的數據結構和算法的教學視頻學習筆記算法


第一章:談談數據結構和算法這2個好基友編程

 

1、聊聊數據結構數組


1、爲何學數據結構?編程能力有質的飛越,再也不停留在調用現成的API,作一個上檔次的程序猿。數據結構


2、什麼是數據結構?數據結構是一門研究非數值計算的程序設計問題中的操做對象,以及他們之間的關係和操做等相關問題的學科。數據結構和算法

思考:好吧,簡單來講程序設計 =數據結構 + 算法,數據結構就是關係,就是數據元素之間存在的一種或多種特定關係的集合。學習


3、數據結構分爲邏輯結構和物理結構,前者指數據對象中數據元素之間的相互關係,不然指邏輯結構在計算機中的存儲形式spa

思考:數據結構  =邏輯結構 +物理結構設計


4、邏輯結構有四種例如如下所看到的:指針

  • 集合結構:除了同屬一個集合外,沒有其它不論什麼關係

  • 線性結構:數據元素之間是一對一的關係

  • 樹形結構:數據元素之間是一對多的關係

 

  • 圖形結構:數據元素之間是多對多的關係

思考:假設從人的交合方面說明4大邏輯結構,集合 =  2個陌生人,線性結構 =  1對夫妻,樹形結構一男多女3p4p5p,圖形結構 = 聚衆淫亂code


5、物理結構是指怎樣將數據元素存儲到計算機的存儲器中,此處的存儲器主要針對內存而言,像硬盤、光盤能外部存儲器的數據組織通常常使用文件結構來描寫敘述。

思考:假設說邏輯結構是關係,那麼物理結構就是關係在內存的存儲關係


6、數據元素的存儲結構形式有兩種:

  • 順序存儲:指數據元素存放在地址聯繫的存儲單元裏。其數據間邏輯關係和物理關係是一致的,比方數組

  • 鏈式存儲:面對時常變化的元素。比順序存儲靈活多了。就是把數據元素存放在隨意的存儲單元裏。這組存儲單元可以是連續的。也可以是不連續的。因此說鏈式存儲結構的數據元素存儲關係並不能反應其邏輯關係,所以需要用一個指針存放數據元素的地址,這樣子經過地址就可以找到關聯數據元素的位置。比方:銀行叫號機

思考:存儲結構順序存儲 +鏈式存儲。前者就是排排坐,後者多了指針指向元素地址,就可以找到下一個元素在哪裏。就是叫號系統

 

2、聊聊算法

1、不明確數據結構和算法的關係?,見下圖



2、算法是什麼?算法宅計算機中表現爲指令的有限序列,並且每一條指令表示一個或者多個操做。一個問題可以由多個算法解決,一個算法也不可能具備通解所有的問題。

思考1:算法就是你泡妞的技巧和方式。對不一樣的妞兒要有不一樣的喜愛,能夠有多個追求的方式,一種追求方式不可能對通吃所有的妞兒,不一樣的追求方式就有區別。有的追的快,有的追得慢。學會針對不一樣的妞兒採取適合的泡妞技巧才能夠高速的泡到妞

思考2:雖然算法不惟一。但是咱們要學習掌握好一些號的算法,對咱們解決這個問題很是有幫助。


3、算法的5個基本特徵:輸入、輸出、有窮性、肯定性和可行性

  • 輸入:有0個或者多個輸入
  • 輸出:有1個或者多個輸出(假設沒有反饋要他幹嗎?)
  • 有窮性:有限的步驟後。有限的時間
  • 肯定性:沒有二義性(愛or不愛)
  • 可行性:每一步可以實現的

4、算法的要求:正確性、可讀性、健壯性、時間效率高、存儲量低


5、算法的正確性:算法的正確性是指算法至少應該具備輸入、輸出和加工處理無歧義性,能正確反映問題的需求、能夠獲得問題的正確答案。

大致分爲下面四個層次:

  • 算法程序沒有語法錯誤
  • 算法程序對於合法輸入能夠產生知足要求的輸出
  • 算法程序對於非法輸入能夠產生知足規格的說明
  • 算法程序對於有益刁難的測試輸入都有要求的輸出結果

思考:對於非法輸入和有益刁難的測試都有輸出知足規格結果很是重要


6、算法的可讀性:算法設計的還有一個目的就是爲了便於閱讀、理解和交流。咱們寫代碼的目的除了讓計算機運行,還有就是爲了便於他人閱讀和改動

思考:代碼的可讀性要強


7、算法的健壯性:當輸入數據不合法時。算法也能夠作出相關的處理。而不是產生異常、崩潰或者莫名其妙的結果。

思考:健壯性,簡而言之就是不會因爲別人亂輸入就把你的程序搞崩潰了


8、算法高效率的時間和內存容量較低:在很是高的效率運行,較少使用的變量。使用較少的內存資源

相關文章
相關標籤/搜索