淺談基礎算法之數組和鏈表(一)


 
 
  上個月老大給我們講解了"淺談大型網站的算法和架構",獲益匪淺。由於篇幅太多(光數據結構大概就有20多種),我也沒有辦法一下全部吸收,故我邊理解,邊分章節與大家分享。
 
  這周我查閱資料,來理解各個數據結構和算法。
  推薦幾本個人感覺不錯的書籍:——我把電子書放到 http://download.csdn.net/user/rtxbc這里了,需要下載,到這里進行下載。
    《指針的藝術.蔡明志》——我只看了C語言這一篇。C語言個人感覺比較難的也就是指針了。
    《數據結構 使用C語言[朱戰立]》——嚴蔚敏的也不錯,可就是里面的很多語法都是抽象語法,無法運行。我個人如果沒有辦法在終端運行,很難印象深刻。
    《算法導論》
 
 
為了學習下載的電子書(截個圖):
  算法結構
  

  C語言

  
 
介紹
 
  1984年,Pascal語義的發明者和結構化程序設計創始者,沃斯提出“算法 + 數據結構 = 程序“,從而獲得當年的圖靈獎。
  現今技術日新月異,互聯網技術在不斷的發展中,從而也翻開了歷史的新篇章,這時有人提出了“算法 + 架構 = 互聯網程序“。
  生活在這個時代的程序員來說,這又意味着什么呢?
 
  從這篇文章開始,我將與各位淺談大型網站的算法和架構,今天先了解一下基礎知識,然后我們進行逐步過渡。
 
查找算法(單機)
 
1.有個無序數組。

                                  

2.找7到20之間的數,你的思路是什么?

無怪乎以下兩點:

  1》冒泡排序

  2》二分查找快

3.C代碼實現

                                   執行結果

數組中插入數據
 

數組問題:插入太慢,得挪數據。

請看下面的代碼,

                                     執行結果

 

試試鏈表
 

                                     代碼結構

 

鏈表插入數據

                                    

鏈表的特點是插入快,查找慢。

 
代碼實現:

                                    實現方式

 

請看執行過程

 

於是有了二叉樹(Binary Tree)
 
  我們不難發現上面的兩個結構(數組和鏈表)各有弊端。
  1》數組在更新的時候比較消耗資源,需要挨個挪動后面的元素。
  2》而鏈表在查詢的時候需要從頭挨個對比之后選擇出要查詢的內容。
  

  綜上我們需要一個查詢更快,更新更快的結構,於是我們有了二叉樹。由於篇幅太長,下一篇繼續介紹。
  

 

 
推薦
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM