資料結構問題起源於程式設計
資料表示:
將資料儲存在計算機(記憶體)中
資料處理:
處理資料,設計方案(演算法)
計算機求解問題
:問題→抽象出問題的模型→求模型的解
問題——
數值問題、非數值問題
數 值 問 題→數學方程
非數值問題→資料結構
本書討論
非數值問題
的資料組織和處理,主要內容如下:(1
)資料的
邏輯結構
:線性表、樹、圖等資料結構,其核心是如何組織待處理的資料以及資料之間的關係;(2
)資料的
儲存結構
:如何將線性表、樹、圖等資料結構儲存到計算機的儲存器中,其核心是如何有效地儲存資料以及資料之間的邏輯關係;(3
)演算法:如何基於資料的某種儲存結構實現插入、刪除、查詢等基本操作,其核心是如何有效地處理資料;(4
)常用資料處理技術
:查詢技術、排序技術、索引技術等
資料:所有能
輸入到計算機中並能被電腦程式
識別和處理
的符號集合。
數值資料:整數、實數等
非數值資料:圖形、圖象、聲音、文字等
資料元素
:資料的
基本單位,在電腦程式中通常作為乙個
整體進行考慮和處理。
資料項:構成資料元素的不可分割的最小單位
資料元素是討論資料結構時涉及的最小資料單位,其中的資料項一般不予考慮。
資料結構
:相互之間存在一定關係的
資料元素
的集合。按照視點的不同,資料結構分為邏輯結構和儲存結構。
邏輯結構:指資料元素之間
邏輯關係
的整體。
資料的邏輯結構是從具體問題抽象出來的
資料模型
儲存結構:又稱為物理結構,是資料及其邏輯結構在
計算機中的表示。
資料結構從邏輯上分為四類:
⑴ 集合:資料元素之間就是
「屬於同乙個集合」 ;
⑵ 線性結構:資料元素之間
存在著一對一的線性關係;
⑶ 樹結構:資料元素之間存在
著一對多的層次關係;
⑷ 圖結構:資料元素之間存在
著多對多的任意關係。
兩種儲存結構: 1.
順序儲存結構
:用一組
連續的儲存單元
依次儲存資料元素,資料元素之間的邏輯關係由元素的
儲存位置
來表示。
2. 任意
的儲存單元儲存資料元素,資料元素之間的邏輯關係用指標來
表示 。
邏輯結構和儲存結構之間的關係
資料的邏輯結構屬於使用者檢視,是
面向問題
的,反映了資料內部的構成方式;資料的儲存結構屬於具體實現的檢視,是
面向計算機
的。抽象資料型別 .
資料型別
(data type
):一組
值的集合以及定義於這個值集上的一組
操作的總稱。
例如:c++
中的整型變數
2. 抽象
(abstract):
抽出問題本質的特徵而忽略非本質的細節。
例如: 地圖、駕駛汽車
3. 抽象資料型別
(abstract data type
,adt):
乙個資料結構
以及定義在該結構上的
一組操作
的總稱。演算法:
是對特定問題
求解步驟的一種描述,是指令的
有限序列
。演算法的五大特性: ⑴
輸入:乙個演算法有零個或多個輸入。
⑵ 輸出
:乙個演算法有乙個或多個輸出。
⑶ 有窮性
:乙個演算法必須總是在執行有窮步之後結束,且每一步都在有窮時間內完成。
⑷ 確定性
:演算法中的每一條指令必須有確切的含義,對於相同的輸入只能得到相同的輸出。
⑸ 可行性
:演算法描述的操作可以通過已經實現的基本操作執行有限次來實現。
演算法的描述方法
自然語言
優點:容易理解
缺點:冗長、二義性
使用方法:粗線條描述演算法思想
注意事項:避免寫成自然段
流程圖
優點:流程直觀
缺點:缺少嚴密性、靈活性
使用方法:描述簡單演算法
注意事項:注意抽象層次
程式語言
優點:能由計算機執行
缺點:抽象性差,對語言要求高
使用方法:演算法需要驗證
注意事項:將演算法寫成子函式
偽**偽**
:介於自然語言和程式語言之間的方法,它採用某一程式語言的基本語法,操作指令可以結合自然語言來設計。
優點:表達能力強,抽象性強,容易理解
演算法分析--
度量演算法效率的方法:
事後統計
:將演算法實現,測算其時間和空間開銷。
缺點:⑴ 編寫程式實現演算法將花費較多的時間和精力;
⑵ 所得實驗結果依賴於計算機的軟硬體等環境因素。
事前分析
:對演算法所消耗資源的一種估算方法。
演算法分析
:對演算法所需要的計算機資源
——時間和空間
進行估算。
時間複雜性
空間複雜性
問題規模:
輸入量的多少。
基本語句:
是執行次數與整個演算法的執行次
數成正比的操作指令。
定理:若a(
n)=am
nm+a
m-1nm
-1+¼+
a1n+
a0是乙個m
次多項式,則a(
n)=o(
nm)。說明:在計算演算法時間複雜度時,可以忽略所有低次冪和最高次冪的係數。 ο
(1)<
(log2n
)<(n
)<(n
log2n)
<(n2
)<(n
3)<…
<(2n)
<(n!)
結論:如果問題規模相同,時間代價與輸入資料有關,則需要分析最好情況、最壞情況、平均情況。
最好情況:出現概率較大時分析
最差情況:實時系統
平均情況:已知輸入資料是如何分布的,
通常假設等概率分布
資料結構 資料結構緒論
資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...
資料結構 緒論
程式 資料結構 演算法 資料 對客觀事物的符號表示。資料元素 資料的基本單位,由若干個資料項組成。資料項是資料不可分割的最小單位。資料物件 性質相同的資料元素的集合,使資料的乙個子集。資料元素是相互之間存在一種或多種特定關係的資料元素的集合。預定義常量型別 函式結果狀態嗎 define true 1...
資料結構緒論
資料結構是一種抽象資料的過程,這種能力是任何工具都無法代替的。學習資料結構的目的 資料結構是計算機專業的基礎,它為幾乎所有的軟體設計的基礎。同時他也培養求解複雜問題的能力。那麼,什麼是資料結構呢,這個概念是很重要的,人月神話上有一段話,說人們往往喜歡將問題分解開來處理,但是這樣一來造成了對整個問題的...