[notebook1]大話數據結構 ch1 ch2 數據結構基礎

ch1 數據結構緒論

書使用C90標準代碼,推薦使用vs系列編輯器

1.4 基本概念和術語

數據:能被計算機識別並輸入給計算機處理的符號集合

數據元素:是組成數據的、有一定意義的基本單位,在計算機中通常作爲整體處理

數據項:一個數據元素可以由若干個數據項組成

數據對象:性質相同的數據元素的集合,是數據的子集

數據結構:相互之間存在一種或多種特定關係的數據元素的集合

1.5 邏輯結構與物理結構

邏輯結構:集合結構、線性結構、圖結構、樹結構

物理結構:順序存儲結構、鏈式存儲結構

1.6 抽象數據類型

抽象數據類型ADT ,Abstract Data Type

ADT標準格式如下:

ADT 抽象數據類型名
Data
    數據元素之間邏輯關係的定義
operation
    操作1
        初始條件
        操作結果描述
    操作2
        ……
    操作n
        ……
endADT

ch2 算法

數據結構和算法關係:通過數據結構解決算法問題

算法定義:算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示一個或多個操作。

算法的特性:輸入、輸出、有窮性、確定性、可行性

p.s. 可以沒有輸入,但一定要有輸出

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

p.s. 正確性層次

1 算法程序沒有語法錯誤

2 算法程序對於合格的輸入數據能夠產生滿足要求的輸出結果

3 算法程序對於非法的輸入數據能夠得出滿足要求的輸出結果(通常要求)

4 算法對於特殊的測試數據由滿足要求的輸出結果

算法效率的度量方法:事後統計方法、事前分析估計方法(取決於問題輸入規模和算法好壞)

函數的漸近增長:給定兩個函數f(n)和g(n),如果存在一個整數N,使得對於所有的n>N,f(n)總是比g(n)大,那麼我們說f(n)的增長漸近快於g(n)

判斷算法效率時通常只關注主項階數  //由主項階數判斷函數的漸近增長

算法時間複雜度:T(n)=O(f(n)) 隨問題規模n的增大,算法執行時間的增長率和f(n)的增長率相同

大O記法,推導方法:

1 用常數項取代所有加法常數

2 修改後的運行次數函數後,只保留最高階項

3 如果最高階項存在且不是1,則去除與這個項相乘的常數

常數項O(1)<對數階O(logn)<線性階O(n)<nlogn階O(nlogn)<平方階O(n^2)<立方階O(n^3)<指數階O(2^n)<階乘階O(n!)<O(n^n)

最壞情況:一般算法時間複雜度均指最壞情況

算法空間複雜度:S(n)=O(f(n))

p.s. 這本書沒有考慮算法的空間複雜度,但是在實際情況中空間複雜度還是很重要的

 

 

 

 

發佈了16 篇原創文章 · 獲贊 3 · 訪問量 2302
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章