二級公共基礎(一)

2021-10-04 07:23:41 字數 4726 閱讀 1056

1、演算法的基本概念

1.1演算法:解決方****而完整的描述。

演算法不等於程式,也不等於計算方法。

1.2基本特性:可行性、確定性、有窮性、擁有足夠的情報

1.3演算法設計的基本方法:例舉法、歸納法、遞推、遞迴、減半遞推法、回溯法

1.4演算法複雜度

演算法複雜度包括時間複雜度和空間複雜度。

時間複雜度:執行演算法所需要的計算工作量

演算法的工作量用演算法所執行的基本運算次數來計算。

空間複雜度:執行這個演算法所需要的記憶體空間

2、資料結構的基本概念

2.1資料結構:指相互有關聯的資料元素的集合。

2.2資料結構研究的3個方面:

① 資料集合中各資料元素之間所固有的邏輯關係,即資料的邏輯結構;

② 在對資料進行處理時,各資料元素在計算機中的儲存關係,即資料的儲存結構;

③ 對各種資料結構進行的運算。

2.3資料的邏輯結構有兩個要素:一是資料元素的集合,通常記為d;二是反映了資料元素之間的前後件關係,通常記為r。乙個資料結構可以表示成:b=(d,r)

資料的儲存結構有順序,鏈結,索引等。

例如,如果把一年四季看作乙個資料結構,則可表示成:b =(d,r)

d =r =

2.4資料結構分為兩大型別:線性結構與非線性結構。

2.41線性結構:

① 有且只有乙個根結點;

② 每乙個結點最多有乙個前件,也最多有乙個後件。

線性結構又稱線性表。在乙個線性結構中插入或刪除任何乙個結點後還應是線性結構。棧、佇列、串等都為線性結構。

如果乙個資料結構不是線性結構,則稱之為非線性結構。陣列、廣義表、樹和圖等資料結構都是非線性結構。

3、線性表及其儲存結構

3.1線性表:由一組資料元素構成,資料元素的位置只取決於自己的序號,元素之間的相對位置是線性的。

3.2線性表的順序儲存結構具有以下兩個基本特點:

① 線性表中所有元素所佔的儲存空間是連續的;

② 線性表中各資料元素在儲存空間中是按邏輯順序依次存放的。

例:元素ai的儲存位址為:adr(ai)=adr(a1)+(i-1)k,adr(a1)為第乙個元素的位址,k代表每個元素佔的位元組數。

3.3順序表的插入運算

插入的過程:

①三種異常情況:

1>當儲存空間已滿時為「上溢」錯誤,不能插入,演算法結束;

2>當i>n時,認為在最後乙個元素之後插入;

3>當i<1時,認為在第乙個元素之前插入。

② 然後從最後乙個元素開始,知道第i個元素,其中每乙個元素均往後移動乙個位置。

③最後將新元素插入到第i個 位置,並且將線性表的長度增加1.

刪除過程:

①2種異常情況:

1>當線性表為空(即n=0)時為「上溢」錯誤,演算法結束;

2>當i<1或i>n時

②然後從第i+1個元素開始,直到最後乙個元素,其中每個元素依次向前移動乙個位置。

③最後將線性表的長度減小1.

4、棧和列隊

4.1棧是限定在一端進行插入與刪除運算的線性表。

1>允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底

2>棧按照「先進後出」或「後進先出」組織資料。

3>棧具有記憶作用。

4>用top表示棧頂位置,用bottom表示棧底。

4.2棧順序儲存及其運算

棧的基本運算有3種:入棧、退棧與讀棧頂元素。

① 入棧運算:在棧頂位置插入乙個新元素;

② 退棧運算:取出棧頂元素並賦給乙個指定的變數;

③ 讀棧頂元素:將棧頂元素賦給乙個指定的變數,指標無變化。

4.3佇列是只允許在一端(隊頭)進行刪除,在另一端(隊尾)進行插入的線性表。

1>rear指標指向隊尾,front指標指向隊頭。

2>佇列又稱為「先進先出」(first in first out,簡稱fifo) 或「後進後出」(last in last out,簡稱lilo)的線性表。

3>入隊運算:從隊尾插入乙個元素;

4>退隊運算:從隊頭刪除乙個元素。

4.4迴圈佇列及其運算

迴圈列表:就是將佇列儲存空間的最後乙個位置繞到第乙個位置, 形成邏輯上的環狀空間,空佇列迴圈使用。

迴圈佇列的元素個數= rear - front

入隊運算和退隊運算:

●每進行一次入隊運算,隊尾指標就進一。當隊尾指標rear=m+ 1時,則置rear=1。

●每進行一次退隊運算,排頭指標就進一。 當排頭指標front= m + 1時,則置front= 1。

5、線性鍊錶

5.1線性表的順序儲存的缺點:

●插入刪除時效率低

●不易擴張

●多個線性表共享空間時,不易分配空間

5.2資料結構中每個資料節點對應於乙個儲存單元,這種儲存單元北稱為儲存節點,簡稱節點。

鏈式儲存方式中,節點的兩個組成部分:

●存放資料元素值的部分,稱為資料域;

●存放指標的部分,稱為指標域。用於指向該節點的前乙個或後乙個節 點。鏈式儲存方式既可以用於線性結構,也可以用於非線性結構。

5.3線性表的鏈式儲存結構稱為線性鍊錶。

線性鍊錶中,head稱為頭指標,head= null (或0) 稱為空表。雙向鍊錶中,llink為左指標,rlink為右指標。

帶鏈的棧

帶鏈的佇列

線性鍊錶的基本運算:查詢、插入、刪除。

6樹與二叉樹

6.1樹是一種簡單的非線性結構,所以元素之間具有明顯的層次特性。

●每乙個結點只有乙個前件,稱為父結點;

●沒有前件的結點只有乙個,稱為樹的根結點,簡稱樹的根;

●每乙個結點可以有多個後件,稱為該結點的子結點;

●沒有後件的結點稱為葉子結點;

●乙個結點所擁有的後件的個數稱為該結點的度,所有結點中最大的度稱為樹的度;

●樹的最大層次稱為樹的深度。

6.2二叉樹的特性:

① 非空二叉樹只有乙個根結點;

② 每乙個結點最多有兩棵子樹,且分別稱為該結點的左子樹和右子樹。

二叉樹的度可以為0(葉子結點),1(只有一顆子樹)或2(有兩顆子樹)

6.3二叉樹具有以下幾個性質:

性質1:在二叉樹的第k層上,最多有2k-1(k≥1)個結點。

性質2:深度為m的二叉樹最多有2m-1個結點。

性質3:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為2的結點多乙個。

性質4:具有n個結點的二叉樹,其深度至少為[log2n]+1,其中[log2n]表示取log2n的整數部分。

6.4滿二叉樹:除最後一層外,每一層上的所有結點都有兩個子結點。

完全二叉樹:除最後一層外,每一層上的結點數均達到最大值;在最後一層上只缺少右邊的若干結點。

完全二叉樹具有以下兩個性質:

性質1:具有n個結點的完全二叉樹的深度為[log2n]+1。

性質2:設完全二叉樹共有n個結點。如果從根結點開始,按層次(每一層從左到右)用自然數1,2,……,n給結點進行編號,則對於編號為k(k=1,2,……,n)的結點有以下結論:

① 若k=1,則該結點為根結點,它沒有父結點;若k>1,則該結點的父結點編號為int(k/2);

② 若2k≤n,則編號為k的結點的左子結點編號為2k;否則該結點無左子結點(顯然也沒有右子結點);

③ 若2k+1≤n,則編號為k的結點的右子結點編號為2k+1;否則該結點無右子結點。

二叉樹通常採用鏈式儲存結構,滿二叉樹與完全二叉樹也可以按層序進行順序儲存。

6.5二叉樹的遍歷

二叉樹的遍歷是指不重複的訪問二叉樹中的所有節點。

(1)前序遍歷

先訪問根結點,然後遍歷左子樹,最後遍歷右子樹;並且在遍歷左、右子樹時,仍需先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。

(2)中序遍歷

先遍歷左子樹、然後訪問根結點,最後遍歷右子樹;並且,在遍歷左、右子樹時,仍然先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。

(3)後序遍歷

先遍歷左子樹、然後遍歷右子樹,最後訪問根結點;並且,在遍歷左、右子樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。

7查詢和排序技術

7.1查詢:根據給定的某個值,在查詢表中確定乙個某關鍵字等於給定值的資料元素。

順序查詢的使用情況:

●線性表為無序表

●表採用鏈式儲存結構

二分查詢只適用於順序儲存的有序表,對於長度為n的有序線性表,最壞情況只需比較log2n次。

7.2排序是指將乙個無序序列整理成按值非遞減順序排列的有序序列,即是將無序的記錄序列調整為有序記錄序列的一種操作。

1>交換類排序:借助資料元素之間的相互交換進行排序的一種方法。

●氣泡排序法:最壞需要比較次數n(n-1)/2;

●快速排序法:最壞需要比較次數n(n-1)/2, 通常效率比氣泡排序效率高。

2>插入排序法:將無序的各個元素依次插入已經有序的線性表中。

●簡單插入排序法:最壞需要比較次數n(n-1)/2;

●希爾排序法:最壞需要比較次數o(n^1.5)。

3>選擇類排序:掃瞄整個線性表,選出最小的元素,將它交換到表的最前面;然後對剩下的繼續同樣的方法,直到子表為空。

●簡單選擇排序法;最壞需要比較次數n(n-1)/2;

●堆排序法;最壞需要比較次數o(nlog2n)。

二級公共基礎知識 二級公共基礎知識 01

樹是一種資料結構,它是由n n 1 個有限結點組成乙個具有層次關係的集合。把它叫做 樹 是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。樹的特點 每個結點有零個或多個子結點 沒有父結點的結點稱為根結點 每乙個非根結點有且只有乙個父結點 除了根結點外,每個子結點可以分為多個不相交的子樹 ...

二級公共基礎之 程式設計

第二章 程式設計基礎 2 1 程式設計設計方法和風格 如何形成良好的程式設計風格 1 源程式文件化 2 資料說明的方法 3 語句的結構 4 輸入和輸出。注釋分序言性注釋和功能性注釋,語句結構清晰第 一 效率第二。2 2 結構化程式設計 結構化程式設計方法的四條原則是 1.自頂向下 2.逐步求精 3....

學習筆記 二級公共基礎知識

演算法 1.演算法是指對解題方 而完整的描述,演算法不等於數學上的計算方法,也不等於程式。2.演算法設計需要考慮可行性 確定性 有窮性與足夠的情報,不能只考慮計算結果。3.演算法設計有窮性是指操作步驟有限且能在有限時間內完成。4.演算法在實現時需要具體的程式語言描述,所以程式可以作為演算法的一種描述...