数据结构试卷错题详细分析
數據結構練習卷錯題收集
快要到數據結構科的期末考試啦,我們老師發了十套模擬練習題(需要的同學可以到我的主頁里面去下載),這一篇博客主要是記錄一下我做這十套試卷的一些錯題,經典題,易錯題還有詳細的分析
(A) R-F??(B) F-R?? (C) (R-F+M)%M ?? (D) (F-R+M)%M
分析:關于循環隊列知識的補充:設front(F)指向隊列頭,rear?指向隊列尾部:尾進頭出
(A) 1?? (B) n?? (C)nlog2n ?? (D) n2
分析:堆排序的空間復雜度是1,所以在堆排序中需要1個輔助記錄單元
(A) n(n-1) ?? (B) n+1?? (C)n ?? (D) n(n+1)
分析:1.強連通圖的定義:在有向圖G中,對于任意兩個頂點Vi和Vj,從Vi到Vj和從Vj到Vi都存在路徑,則稱該有向圖為強連通圖
那么要使得強連通圖的邊最少,我們得讓這些頂點成環,所以至少得有n條邊
(A) 數據項 ?? (B) 數據類型?? (C)數據元素 ?? (D) 數據變量
數據的最小單位是數據項
可以隨機訪問到任一個頂點的簡單鏈表(因為圖用鄰接表存儲的話是有一個存放頂點的結構體數組的,每個頂點后面都跟著一個簡單鏈表:由該頂點所連接的頂點構成)
(A) 堆排序 ?? (B) 冒泡排序?? (C)希爾排序?? (D) 快速排序
對于快速排序而言,當數據的初始狀態幾乎有序時它的時間復雜度達到O(n2),但是當數據初始接近反序時它的時間復雜度升至O(nlogn),希爾排序,冒泡排序的時間復雜度不是O(nlogn)(對于希爾排序,它的時間復雜度受到希爾增量的影響),故答案為A
(A) O(n)?? (B) O(n2)?? (C)O(nlogn) ??(D) O(logn)
在二叉排序樹上查找結點相當于折半查找,平均的時間復雜度為O(logn)
但是最壞的情況,由于排序二叉樹可能是不平衡的,最壞的情況便退化為了單鏈表,查找的時間復雜度為O(n)
×:已知二叉樹的先序遍歷和后序遍歷序列并不能唯一確定一顆二叉樹,而如果是已知另外的組合卻是可以的
√:樹轉化為二叉樹的流程:先在樹的每層的兄弟之間加一條線,然后去線:只保留父結點與第一個孩子的連線以及剛剛我們所加的那些線,然后,把第一個孩子放在左子樹,第一個孩子的兄弟全部放在第一個孩子的左子樹,所以新的BT沒有右子樹
(A) O(n) ?? (B)O(1) ?? (C) O(n2) ?? (D) O(logn)
對于單鏈表而言,單鏈表的創建是一次一次地插入新結點的,那么要想構造有序的單鏈表,每次插入新的元素都要進行比較,找它的位置,而不幸的是,對于單鏈表只能用直接插入等o(n2) 級的排序算法來實現排序,所以時間復雜度為O(n2)
√:首先我們來看順序存儲結構:找到值為X的結點所用的時間為O(1),但是刪除這個結點需要移動元素,時間復雜度為O(n),所以用順序存儲結構刪除值為X的結點的時間復雜度為O(n)
我們再看看鏈式存儲結構:找到值為X的結點要遍歷整個鏈表,時間復雜度為O(n),但是刪除這個結點稍稍改變指針的連接,時間復雜度為O(1),所以鏈式存儲結構刪除值為X的結點的時間復雜度為O(n)
12.設有一組初始關鍵字序列為(24,35,12,27,18,26),則第3趟直接插入排序結束后的結果的是__________________________________。
12,24,35,27,18,26(24自己插入排序算一趟了)
(A) n ?? (B) n/2 ?? (C)(n+1)/2 ?? (D) (n-1)/2
我要計算平均比較次數,我們先來計算總的比較次數:順序查找時,若第一個即為待查找元素,則查找次數為1,若第二個是待查找元素,則查找次數為2,等等。 所以查找次數是:1+2+3+4+5+…+n=(1+n)*n/2次,而每個元素是待查找數的概率是相等的,為1/n,那么平均查找次數就是總查找次數乘以每個元素是待查找元素的概率,即(n+1)/2次。
×:順序表查找是指從第一個元素開始查找一直到最后一個元素為止,所以它在鏈表上也可以進行
(A) 單向鏈表 ?? (B)單向循環鏈表
(C)雙向鏈表 ?? (D) 雙向循環鏈表
分析:我們題目要求是在尾部插入或者刪除,如果我們使用的是單向鏈表或者單向循環鏈表,我們找到尾結點都需要遍歷整個鏈表,使用單向循環鏈表也是要跑一圈才能找到尾結點的,所以雙向循環鏈表可以立刻找到尾結點,同時,雙向鏈表的特性也使得雙向循環鏈表的插入和刪除變得快速,故D正確
O(n2),O(n+e)
(A) 快速排序?? (B) 冒泡排序?? (C) 希爾排序?? (D) 堆
各類排序算法空間復雜度與時間復雜度:
空間復雜度:直接插入排序 折半插入排序 希爾排序 冒泡排序 簡單選擇排序 堆排序為O(1)
????????????快速排序為O(logn)
????????????歸并排序為O(n)
????????????基數排序為O(n+rd)
?
時間復雜度:直接插入排序 希爾排序 冒泡排序 簡單選擇排序為O(n2)
????????????快速排序 歸并排序為O(nlogn)
????????????希爾排序:時間復雜度隨希爾變量的取值的不同而不同
?
穩定的排序算法:冒泡排序,插入排序,歸并排序,基數排序
不穩定的排序算法:快速排序,堆排序,選擇排序,希爾排序
補充:算法穩定性的概念:假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,則稱這種排序算法是穩定的;否則稱為不穩定的。
分析:正確性,易讀性,強壯性,效率性
n個頂點的無向完全圖有n(n-1)/2條邊,n的頂點的有向完全圖中有n(n-1)條邊
大家可以參考這篇文章:
換原二叉樹超好用辦法的詳細分析
×:如果帶權無向圖中連接同一個點相同權值的邊不止一條的時候,最小生成樹不唯一
n-1條邊
好啦,終于結束了錯題的收集和分析過程啦,回頭看看自己好像也做錯了不少題,但是對錯題的理解與反思對自己是有很大幫助的,也希望這篇博文能帶給大家一些幫助!(明天要考數據結構啦,希望能考出自己理想的成績!?)
總結
以上是生活随笔為你收集整理的数据结构试卷错题详细分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity素材二:三个老头欧系战士模型带
- 下一篇: Unity3D NGUI图文混排聊天表情