準備系統完整的複習資料結構和演算法,開始的東西很基礎+簡單,但也寫一下,以後要回顧直接看這一篇省事。
程式 = 資料結構+演算法
資料結構:相互之間存在一種或多種特定關係的資料元素的集合。
資料物件:具有相同性質的資料元素的幾何,是資料的乙個子集。
資料的邏輯結構:
集合:元素除同屬一集合無其他關係。
線性結構:元素之間為一對一關係,除了第乙個元素所有元素都有唯一前驅,除了最後一元素,所有元素都有唯一後繼。
樹形結構:元素之間為一對多關係。
圖狀結構(網狀結構):元素之間存在多對多的關係。
資料的物理結構(儲存結構)–用計算機表示資料元素的邏輯關係
順序儲存:把邏輯相鄰的元素儲存在物理位置也相鄰的儲存單元中。對應邏輯結構為線性結構。
以下三種為非線性儲存
鏈式儲存:邏輯上相鄰的元素再物理位置上可能不相鄰,用元素儲存位址的指標(引用)來表示元素之間的邏輯關係。
索引儲存:在儲存元素資訊的同時,還建立附加的索引表(也要儲存空間)。索引表中的每項稱為索引項,索引項的一般形式是(關鍵字,位址)
雜湊儲存:又稱雜湊儲存,根據元素的關鍵字直接計算出該元素的儲存位址。
要點:1.順序儲存物理連續,非順序儲存物理離散。
2.儲存結構影響儲存空間分配的方便程度
3.影響資料運算速度。
資料的運算:運算包括運算的定義和實現,運算定義針對邏輯結構,實現針對儲存結構
資料型別:原子型別,結構型別。
抽象資料型別(adt),數學化語言定義資料的邏輯結構和運算,不包括具體的實現。
演算法:如何處理資料結構,以解決實際問題。
時間複雜度:時間預估演算法時間開銷tn與問題規模n的關係.
如果為多項式,很複雜,省略其餘部分,只考慮階數最高項,且最高項係數為1。
大o表示法:
時間複雜度對排行:
最壞時間複雜度:最壞情況下演算法的時間複雜度。
平均時間複雜度:所有輸入示例等概率出現的情況下,演算法的期望執行時間。
最好時間複雜度:不怎麼考慮,考察演算法主要考慮最壞情況。
空間複雜度:看資料占用記憶體。
演算法與資料結構基礎知識
計算機要工作,首先要有資料,資料就是計算機加工和處理的物件 簡單的分類一下,資料分為數值資料和非數值資料 數值資料主要應用於工程和科學計算 而非數值資料,比如聲音,影象等在計算機中是以二進位制形式存放在物理介質上。每個二進位制位為乙個bit,8個二進位制位為乙個byte 位元組 要談資料結構,就必須...
資料結構基礎知識
時間複雜度和空間複雜度 同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測...
資料結構基礎知識
一種資料的邏輯結根據需要可以表示成多種儲存結構,常用的儲存結構有順序儲存 鏈結儲存 索引儲存等,採用不同的資料結構,其資料處理的效率是不同的。線性表是一種常用的資料結構。在實際應用中,線性表都是以棧 佇列 字串 陣列等特殊線性表的形式來使用的。線性表是一種線性結構。線性表有順序儲存結構和鏈式儲存結構...