資料結構掃盲

2021-09-01 13:23:52 字數 2976 閱讀 1721

1.演算法的特性:有窮性,確定性,可行性,輸入(>=0),輸出(>=1)

設計演算法時,通常應考慮達到以下目標:1、正確性 2、可讀性 3、健壯性 4、高效率與低儲存量需求

2.二叉線索樹每個節點都有指向前驅和後繼的指標(錯)

【解析】有的指向左右孩子

3.對大小均為n的有序表和無序表分別進行順序查詢,在等概率查詢的情況下,對於查詢成功,它們的平均查詢長度是相同的,而對於查詢失敗,它們的平均查詢長度是不同的(對)

【解析】

查詢失敗的情況下,無序表查詢需要更長。

用公式來說話吧:假設有n個元素,無序表查詢失敗的平均長度為n(因為肯定要找到末尾,這個沒異議吧);而對於有序表,查詢的過程中可以中途停止查詢(比如1 2 3  5 6,查詢4,所以找到5就可以判定查詢失敗了),所以有序表順序查詢,失敗的情況共有n種情況,分別在查詢到第1個位置,第2個位置...第n個位置時判定查詢失敗,所以總的平均查詢長度為(1+2+...+n)/ n = (n+1)/2。所以只要n不等於1,有序表順序查詢失敗的平均長度(n+1)/2必小於無序表的n。

4.度量乙個程式執行的時間通常有兩個方法:事前分析估計,事後統計

5.深度優先遍歷和拓撲排序可以判斷出乙個有向圖是否有環(迴路)

6.資料的邏輯結構與資料元素本身的內容和形式無關(對)

7.堆的定義如下:n個元素的序列當且僅當滿足下關係時,稱之為堆。

(ki <= k2i,ki <= k2i+1)或者(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2)要麼是最大化堆,要麼是最小化堆

8.用鄰接表儲存圖,深搜,廣搜,拓撲時間複雜度都是o(n+e)。

9.稀疏矩陣的壓縮儲存方法: 一 、三元組順序表 二、行邏輯聯接的順序表 三、 十字鍊錶

10.折半查詢的條件:順序儲存的有序表

11.a[n,n]是對稱矩陣,將下面三角(包括對角線)以行序儲存到一維陣列t[n(n+1)/2]中,則對任一上三角元素a[i][j]對應t[k]的下標k是()備註:陣列下表從0開始。

a.i(i+1)/2+jb.j(j+1)/2+i(√)c.i(j+i)/2+1     d.j(i+1)/2+1

12.若用乙個大小為

7的陣列來實現迴圈佇列,且當前

rear

和front

的值分別為0和

2,當從佇列中刪除乙個元素,再加入兩個元素後,

rear

和front

的值分別為多少?(   )。

a. 1

和5         b.2

和4c.23d. 3和2

13.普里姆

演算法的時間複雜度為o(n^

2),

它對稠密較為適合。

克魯斯卡爾演算法的時間複雜度為o(eloge), 它對稀疏較為適合。

14.對於一棵具有n個結點的二叉樹,用二叉鍊錶儲存時,其指標總數為2n個,其中n-1個用於指向孩子,n+1個指標是空閒的。

15.二叉樹是指度為2的有序

樹。一棵結點數為n的二叉樹,其所有結點的度的總和是n-1

結點的度:結點子樹的個數

16.對n個記錄的表r[1..n]進行直接插入排序,設關鍵字逆有序,則所需的關鍵字間的比較次數為    n(n-1)/2

【解析】插入到 有序列的時候,是從最後開始比較!

void insertsort(int r[ ],int n)

}

17.演算法分析的目的是(   )。

a. 找出資料結構的合理性;

b. 分析演算法的效率;

c. 研究演算法中輸入和輸出關係;

d. 分析演算法的易理解性;

演算法分析是指對乙個演算法的執行時間和占用空間做定量的分析,計算相應的數量級。分析演算法的目的就是要降低演算法的時間複雜度和空間複雜度,提高演算法的執行效率。

18.採用遞迴方式對順序表進行快速排序,下列關於遞迴次數的敘述中,正確的是(d)

a.遞迴次數與初始資料的排列次序無關

b.每次劃分後,先處理較長的分割槽可以減少遞迴次數

c.每次劃分後,先處理較短的分割槽可以減少遞迴次數

d.遞迴次數與每次劃分後得到的分割槽處理順序無關

【解析】定義乙個全域性變數,在遞迴函式裡+1,這樣遞迴的次數就放到全域性變數裡了,只要是給定了乙個順序表和當前分出的前後兩個區域,那麼當下無論是先長還是先短,遞迴次數是不變的。

但是對於乙個順序表來說,初始資料的排列是對遞迴次數有影響的。比如:乙個遞增的表和乙個雜亂的表,都是選第乙個資料作為支點,那麼在函式裡

qsort( int )

給支點找位置;

qsort(左邊);

qsort(右邊);

這兩種情況下,遞增的表會出現左側qsort()不用遞迴的情況,右邊一直遞迴,二叉樹就會退化為單鏈表,會達到o(n);雜亂的表可能會左右比較「相當」的遞迴,如果軸點恰好平分兩個待排序部分,會達到o(logn)

19.n個節點按照不同的順序插入到二叉排序樹中,可以得到n!個不同的二叉排序樹,在檢索乙個關鍵碼時候,比較次數最小的樹叫做最佳二叉排序樹,但是最佳二叉排序樹構造代價大,並且很難動態的保持。所以現實中不怎麼使用「最佳」,更多的使用「較佳」的平衡二叉樹。

最佳二叉排序樹的特點是除了最下一層不滿外,其他都是充滿的。

資料結構與演算法分析之概念掃盲

author administrator ds data structure 資料結構 資料之間是有聯絡的 key value 資料之間是有結構的 tree binary tree 資料之間是可以進行運算的 search delete update insert 基本概念6個 資料 data 能被計...

資料結構 資料結構緒論

資料結構是相互間存在一種或多種特定關係的資料元素的集合。程式設計 資料結構 演算法 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及他們之間的關係和操作等相關問題的學科。資料元素是組成資料的 有一定意義的基本單位,是計算機中通常作為整體處理,也被稱為記錄。乙個資料元素可以由若干個資料項組...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...