本章介紹資料結構和演算法的基本概念,以及演算法分析的基本方法,是學習後續各章的基礎。本章知識點的組織結構如下圖所示:
本章的重點是:
資料結構的基本概念;
資料的邏輯結構、儲存結構以及二者之間的關係;
演算法及特性;
大o記號的表示。
本章的難點是:
抽象資料型別的定義和使用;
演算法的時間複雜度分析。
本章要抓住兩條主線,一條主線是資料結構,包括資料結構的研究物件及相關概念,另一條主線是演算法,包括演算法的相關概念、描述方法以及時間複雜度的分析方法。
資料結構部分,從問題的求解過程入手,理解「資料結構+演算法=程式」;注意強調資料結構和程式設計之間的關係。資料結構部分的核心概念是資料元素,注意通過具體例項引申資料元素之間的關係;資料結構部分的重要概念是資料結構,要抓住兩個方面:邏輯結構和儲存結構,並注意把握二者之間的關係。
演算法部分,要以演算法的概念和特性為基本點,並在以後的教學中注意應用演算法的特性,不要孤立地學習概念,注意概念的引申和應用;對於演算法時間效能的分析,要將注意力集中在增長率上,即基本語句執行次數的數量級,強調三個要點:基本語句、執行次數、數量級,演算法時間效能分析的結果是用大o記號表示的數量級。
最後,強調資料結構和演算法分析都是針對大量資料,即大量資料的組織、大量資料的處理效率。隨著計算機運算速度的增長,對於能夠處理大量資料的快速程式的需求也變得日益強烈。
程式設計的一般過程是「問題→想法→演算法→程式」,其實質是資料表示和資料處理。資料表示的主要任務是從問題抽象出資料模型,並將該模型從計算機機外表示轉換為計算機機內表示;資料處理的主要任務是對問題的求解方法進行抽象描述,即設計演算法。
資料結構是研究非數值問題中計算機的操作物件以及它們之間關係和操作的學科。
資料元素是資料的基本單位,在電腦程式中通常作為乙個整體進行考慮和處理。資料元素是討論資料結構時涉及的最小資料單位,其中的資料項一般不予考慮。
資料結構是指相互之間存在一定關係的資料元素的集合。按照視點的不同,資料結構分為邏輯結構和儲存結構。資料的邏輯結構是指資料元素之間邏輯關係的整體,資料的儲存結構是資料及其邏輯結構在計算機中的表示。
根據資料元素之間邏輯關係的不同,資料結構分為四類:集合、線性結構、樹結構、圖結構。
抽象資料型別是乙個資料模型(即資料結構)以及定義在該結構上的一組操作的總稱。
演算法是對特定間題求解步驟的一種描述,是指令的有限序列。演算法必須滿足下列五個重要特性:輸入、輸出、有窮性、確定性、可行性。
乙個「好」演算法除了要滿足演算法的五大特性外,還要具備下列特性:正確性、健壯性、簡單性、抽象分級、高效性等。
常用的描述演算法的方法有自然語言、流程圖、程式語言和偽**等,其中,偽**是比較合適的描述演算法的方法,被稱為「演算法語言」或「第一語言」。
度量乙個演算法的效率有兩種方法:事後統計的方法和事前分析估算的方法。
撇開與計算機軟、硬體有關的因素,影響演算法時間代價的最主要因素是問題規模。問題規模是指輸入量的多少,一般來說,它可以從問題描述中得到。
為了客觀地反映乙個演算法的執行時間,可以用演算法中基本語句的執行次數來度量演算法的工作量。基本語句是執行次數與整個演算法的執行次數成正比的語句。
時間複雜度通常用大o記號表示,這種方法實際上是一種估算方法。
求解演算法的時間複雜度的簡便方法是:找出所有語句中執行次數最多的那條句作為基本語句,計算基本語句執行次數的數量級並放入大o記號中。
問題抽象與程式設計
人和計算機有效交流的途徑是(a)。
a.程式 b.語言 c.語句 d.演算法
程式設計的關鍵是(c)。
a.資料結構和演算法 b.資料表示和資料處理 c.a和b都對
本課程討論所有問題的資料組織和處理。(×)
程式設計過程中運用的思維是(d)。
a.邏輯思維 b.抽象思維 c.形象思維 d.計算思維
資料結構基本概念
邏輯結構與資料元素本身的內容和形式無關。(√)
基於某種邏輯結構之上的基本操作,其實現是唯一的。(×)
理論上講,儲存結構與程式語言無關。(×)
討論資料結構時的著眼點是(b)。
a.資料 b.資料元素 c.資料物件 d.資料項
編譯程式處理的資料是(c)。
a.語言b.語句c.源程式d.字串
按照視點的不同,資料結構分為邏輯結構和儲存結構,其中的視點指的是(a)。
a.記憶體 b.外存 c.檔案 d.問題
演算法基本概念
流程圖是最常用的描述演算法的方法。(×)
同程式語言一樣,偽**也有國際標準。(×)
演算法的確定性要求對於相同的輸入,一定會得到相同的輸出。(√)
演算法必須滿足正確性,否則就沒有存在的價值。(×)
(d)被稱為「演算法語言」。
a.自然語言 b.流程圖 c.程式語言 d.偽**
演算法分析
演算法的時間複雜度都要通過演算法中的基本語句的執行次數來確定。(×)
演算法的時間複雜度是對演算法所消耗資源的一種精確計算。(×)
演算法的空間複雜度指的是輸入/輸出資料占用的空間以及執行演算法的輔助空間。(×)
就地演算法或原地演算法指的是演算法在執行過程中不需要輔助空間。(×)
以下程式段中,問題規模是(h),基本語句是(c),時間複雜度是(g)。
a.(1)
b.(2)
c.(3)
d.(4)
e.o(n
2n^2
n2)f.o(m
2m^2
m2)g.o(m×n)
h.o(m×n/2)
(1)
for(i=
0;i)
資料結構 資料結構緒論
資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...
資料結構 緒論
程式 資料結構 演算法 資料 對客觀事物的符號表示。資料元素 資料的基本單位,由若干個資料項組成。資料項是資料不可分割的最小單位。資料物件 性質相同的資料元素的集合,使資料的乙個子集。資料元素是相互之間存在一種或多種特定關係的資料元素的集合。預定義常量型別 函式結果狀態嗎 define true 1...
資料結構緒論
資料結構是一種抽象資料的過程,這種能力是任何工具都無法代替的。學習資料結構的目的 資料結構是計算機專業的基礎,它為幾乎所有的軟體設計的基礎。同時他也培養求解複雜問題的能力。那麼,什麼是資料結構呢,這個概念是很重要的,人月神話上有一段話,說人們往往喜歡將問題分解開來處理,但是這樣一來造成了對整個問題的...