數據結構(一)之基礎知識

學習數據結構主要源於如下緣由:javascript

  在工做中我是用meteor在作項目,先後臺都要寫,服務端是用的node。以前有和同事作過一個郵箱功能,性能測試時併發量一高就發送失敗。我認爲處理併發量的問題應該須要數據結構與算法和設計模式這三點來優化。這是往大了說,細說就是工做中,功能每次都是加班超快趕,在多人合做下,若是代碼結構與邏輯混亂,後期維護困難,功能很差擴展。因爲咱們組都是前端人員接下這個項目,對於數據庫的設計經驗缺少,才一再出現性能問題,因此我認爲學習數據結構與算法尤其重要。本人也是正在學習中,有問題歡迎你們指正。前端

  第一篇筆記先說說數據結構的基礎:java

  一·術語:node

    1.數據:描述客觀事物的符號,是計算機中能夠操做的對象,能被計算機識別,並輸入給計算機處理的符號集號。我的理解就好像變量同樣。 算法

    2.數據元素:是組成數據的,有必定意義的基本單位,在計算機中一般做爲總體處理。也被稱爲記錄。好比人類的數據元素是人。重點在於總體數據庫

    3.數據項:一個數據元素能夠由若干個數據項組成,重點在於單個,是不可分割的最小單位。好比:一個person集合(數據元素)由'name','age'(數據項)來組成。設計模式

    4.數據結構:不一樣數據元素之間不是獨立的,相互之間存在一種或多種特定關係的數據元素的集合。 數據結構

  二.數據的邏輯結構與物理結構:併發

    1.邏輯結構分爲集合結構,線性結構,樹形結構,圖形結構性能

    (1)集合結構:數據元素除了同屬一個集合外,沒有其餘關係,元素之間是'平等'關係。

  

集合結構示例圖

    (2)線性結構:線性結構中的元素存在一對一的關係

線性結構示例圖

    (3) 樹形結構:樹形結構中的數據存在一對多的層次關係,咱們經常使用的二叉樹結構就是樹形結構中的一種

 

樹形結構示例圖

    (4)圖形結構:圖形結構的數據元素是多對多的關係

圖形結構示例圖

    注:通常在設計一個數據結構時,咱們習慣將數據元素看作一個結點,用圓表示。元素之間的邏輯關係用連線表示,若是有方向的,能夠用帶箭頭的連線表示。

     2.物理結構:是指數據的邏輯結構在計算機中的存儲形式。這裏主要指內存,像硬盤,軟盤主要用文件結結來描述。

    (1)順序存儲:把數據元素存在地址連續的存儲單元裏

 順序存儲結構示例圖

    (2)鏈式存儲:是把數據元素存放在任意的存儲單元裏,這組存儲單元能夠是連續的,也能夠是不連續的。數據在哪不要緊,只要指針存放相應的地址知道下一個就到你了就行。

鏈式存儲結構示例圖

  三.抽象數據類型

    1.數據類型:是指一組性質相同的值的集合及定義在此集合上的一些操做的總稱。好比在javascript中有number,string,boolean,null,undefined,object

    2.抽象數據類型:是指一個數學模型及定義在該模型上的一組操做。好比在數學的座標軸中,有(x,y)也有(x,y,z),那麼咱們能夠定義一個軸象數據類型point。

 

  總結:本篇主要介紹數據結構中的一些術語,雖然都是些概念,不是很好理解,但在以後的學習中結合一些練習與應用,會幫助咱們理解。下一篇將介紹一下算法的基礎知識,數據結構的學習離不開算法。二者相結合才能體現彼此的優勢,發揮正真的做用。個人學習主要參考《大話數據結構》《算法》《數據結構》,你們能夠去了解。

相關文章
相關標籤/搜索