1.什么是資料結構
資料結構是計算機存盤、組織資料的方式,對于特定的資料結構(比如陣列),有些操作效率很高(讀某個陣列元素),有些操作的效率很低(洗掉某個陣列元素),程式員的目標是為當前的問題選擇最優的資料結構,
資料結構,直白地理解,就是研究資料的存盤方式,
例如,一直以來大家面對的資料存盤,都是類似存盤 1、2、{a,b,c} 這樣的問題,解決方式無疑是用變數或者陣列對資料進行存盤,即:
int a=1; int b=2; char str[3]={‘a’,‘b’,‘c’};
但是,如果要存盤這樣一組資料:{張亮,張平,張華,張群,張晶,張磊},資料之間具有這樣的關系:張亮是張平、張華和張群的父親,同時張平還是張晶和張磊的父親,資料之間的關系如圖 所示:

對于存盤之間具有復雜關系的資料,如果還是用變數或陣列來存盤(比如用陣列存盤 {“張亮”,“張平”,“張華”,“張群”,“張晶”,“張磊”} ),資料存盤是沒有問題,但是無法體現資料之間的邏輯關系,后期根本無法使用,顯然不明智,
2.為什么要學習資料結構
(1)資料結構是所有計算機專業的同學必學的一門課程
(2)資料結構研究的是資料如何再計算機中進行組織和存盤,使得我們可以高效的獲取資料或者修改資料
(3)資料是程式的核心要素,因此資料結構的價值不言而喻,無論你在寫什么程式,你都需要與資料打交道,比如員工工資、股票價格、雜貨清單或者電話本,在不同場景下,資料需要以特定的方式存盤,我們有不同的資料結構可以滿足我們的需求,
(4)一個好的程式無非是選擇一個合理的資料結構和好的演算法,而好的演算法的選擇很大程度上取決于描述實際問題所采用的資料結構,所以想撰寫出好的程式必須扎實的掌握資料結構,
3.常見的資料結構
(1)陣列
(2)堆疊
(3)佇列
(4)鏈表
(5)散串列
(6)樹
(7)堆
(8)圖

4.資料結構和演算法中的一些概念
(1)資料:所有能被輸入到計算機中,且能被計算機處理的符號的集合,是計算機操作的物件的總稱,
(2)資料元素:資料(集合)中的一個“個體”,資料及結構中討論的基本單位
(3)資料項:資料的不可分割的最小單位,一個資料元素可由若干個資料項組成,
(4)資料型別:在一種程式設計語言中,變數所具有的資料種類,整型、浮點型、字符型等等
(5)邏輯結構:資料之間的相互關系,
a.集合 結構中的資料元素除了同屬于一種型別外,別無其它關系,
b.線性結構 資料元素之間一對一的關系
c.樹形結構 資料元素之間一對多的關系
d.圖狀結構或網狀結構 結構中的資料元素之間存在多對多的關系
(6)物理結構/存盤結構:資料在計算機中的表示,物理結構是描述資料具體在記憶體中的存盤(如:順序結構、鏈式結構、索引結構、哈希結構)等
(7)在資料結構中,從邏輯上可以將其分為線性結構和非線性結構
(8)資料結構的基本操作的設定的最重要的準則是,實作應用程式與存盤結構的獨立,實作應用程式是“邏輯結構”,存盤的是“物理結構”,邏輯結構主要是對該結構操作的設定,物理結構是描述資料具體在記憶體中的存盤(如:順序結構、鏈式結構、索引結構、希哈結構)等,
(9)順序存盤結構中,線性表的邏輯順序和物理順序總是一致的,但在鏈式存盤結構中,線性表的邏輯順序和物理順序一般是不同的,
(10)演算法五個特性: 有窮性、確定性、可行性、輸入、輸出,
(11)演算法的描述有偽程式、流程圖、N-S結構圖等,E-R圖是物體聯系模型,不是程式的描述方式,
(12)設計演算法在執行時間時需要考慮:演算法選用的規模、問題的規模
(13)時間復雜度:演算法的執行時間與原操作執行次數之和成正比,時間復雜度有小到大:O(1)、O(logn)、O(n)、O(nlogn)、O(n2)、O(n3),冪次時間復雜度有小到大O(2n)、O(n!)、O(nn)
(14)空間復雜度:若輸入資料所占空間只取決于問題本身,和演算法無關,則只需要分析除輸入和程式之外的輔助變數所占額外空間,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/234244.html
標籤:其他
上一篇:HTML的那些天
下一篇:深度優化搜素(dfs)
