第9章自測卷答案_第1頁
第9章自測卷答案_第2頁
第9章自測卷答案_第3頁
第9章自測卷答案_第4頁
第9章自測卷答案_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第9章 查找 自測卷答案 姓名 班級 A題號一二三四五總分題分1027162423100得分一、填空題(每空1分,共10分)1. 在數(shù)據(jù)的存放無規(guī)律而言的線性表中進行檢索的最佳方法是 順序查找(線性查找) 。2. 線性有序表(a1,a2,a3,a256)是從小到大排列的,對一個給定的值k,用二分法檢索表中與k相等的元素,在查找不成功的情況下,最多需要檢索 8 次。設有100個結點,用二分法查找時,最大比較次數(shù)是 7 。3. 假設在有序線性表a20上進行折半查找,則比較一次查找成功的結點數(shù)為1;比較兩次查找成功的結點數(shù)為 2 ;比較四次查找成功的結點數(shù)為 8 ;平均查找長度為 3.7 。解:顯然

2、,平均查找長度O(log2n)<5次(25)。但具體是多少次,則不應當按照公式來計算(即(21×log221)/204.6次并不正確!)。因為這是在假設n2m-1的情況下推導出來的公式。應當用窮舉法羅列:全部元素的查找次數(shù)為(12×24×38×45×5)74; ASL74/20=3.7 !4【計研題2000】折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它將依次與表中元素 28,6,12,20 比較大小。5. 在各種查找方法中,平均查找長度與結點個數(shù)n無關的查找方法是 散列查找 。6. 散

3、列法存儲的基本思想是由 關鍵字的值 決定數(shù)據(jù)的存儲地址。7. 有一個表長為m的散列表,初始狀態(tài)為空,現(xiàn)將n(n<m)個不同的關鍵碼插入到散列表中,解決沖突的方法是用線性探測法。如果這n個關鍵碼的散列地址都相同,則探測的總次數(shù)是 n(n-1)/2=( 12n-1) 。(而任一元素查找次數(shù) n-1)二、單項選擇題(每小題1分,共27分)( B )1在表長為的鏈表中進行線性查找,它的平均查找長度為. ; . (); . ; . ()( A )2【計研題2001】折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,則它將依次與表中 比較大小,查找結果是

4、失敗。A20,70,30,50 B30,88,70,50 C20,50 D30,88,50( C )3【計研題2001】對22個記錄的有序表作折半查找,當查找失敗時,至少需要比較 次關鍵字。A3 B4 C5 D 6( A )4. 鏈表適用于 查找A順序 B二分法 C順序,也能二分法 D隨機( C )5. 折半搜索與二叉搜索樹的時間性能 A. 相同 B. 完全不同 C. 有時不相同 D. 數(shù)量級都是O(log2n)6【91程P3】從供選擇的答案中,選出應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。要進行線性查找,則線性表 A ;要進行二分查找,則線性表 B ;要進行散列查找

5、,則線性表 C 。某順序存儲的表格,其中有90000個元素,已按關鍵項的值的上升順序排列。現(xiàn)假定對各個元素進行查找的概率是相同的,并且各個元素的關鍵項的值皆不相同。當用順序查找法查找時,平均比較次數(shù)約為 D ,最大比較次數(shù)為 E 。供選擇的答案:AC: 必須以順序方式存儲 必須以鏈表方式存儲 必須以散列方式存儲 既可以以順序方式,也可以以鏈表方式存儲 必須以順序方式存儲且數(shù)據(jù)元素已按值遞增或遞減的次序排好 必須以鏈表方式存儲且數(shù)據(jù)元素已按值遞增或遞減的次序排好D,E: 25000 30000 45000 90000答案: A= B= C= D E 7. (96初程P73)從供選擇的答案中,選出

6、應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。數(shù)據(jù)結構反映了數(shù)據(jù)元素之間的結構關系。鏈表是一種 A ,它對于數(shù)據(jù)元素的插入和刪除 B 。通常查找線性表數(shù)據(jù)元素的方法有 C 和 D 兩種方法,其中 C 是一種只適合于順序存儲結構但 E 的方法;而 D 是一種對順序和鏈式存儲結構均適用的方法。 供選擇的答案:A:順序存儲線性表 非順序存儲非線性表順序存儲非線性表 非順序存儲線性表B: 不需要移動結點,不需改變結點指針 不需要移動結點,只需改變結點指針 只需移動結點,不需改變結點指針 既需移動結點,又需改變結點指針C: 順序查找 循環(huán)查找 條件查找二分法查找D: 順序查找 隨機

7、查找 二分法查找分塊查找E: 效率較低的線性查找 效率較低的非線性查找 效率較高的非線性查找效率較高的線性查找答案:A B C D E 8. 【97程P18】 從供選擇的答案中,選出應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。在二叉排序樹中,每個結點的關鍵碼值 A , B 一棵二叉排序,即可得到排序序列。同一個結點集合,可用不同的二叉排序樹表示,人們把平均檢索長度最短的二叉排序樹稱作最佳二叉排序,最佳二叉排序樹在結構上的特點是 C 。供選擇的答案A: 比左子樹所有結點的關鍵碼值大,比右子樹所有結點的關鍵碼值小 比左子樹所有結點的關鍵碼值小,比右子樹所有結點的關鍵碼值大

8、比左右子樹的所有結點的關鍵碼值都大 與左子樹所有結點的關鍵碼值和右子樹所有結點的關鍵碼值無必然的大小關系B: 前序遍歷 中序(對稱)遍歷 后序遍歷 層次遍歷C: 除最下二層可以不滿外,其余都是充滿的 除最下一層可以不滿外,其余都是充滿的 每個結點的左右子樹的高度之差的絕對值不大于1 最下層的葉子必須在最左邊答案:A B C 9. 【92程 P6】 從供選擇的答案中,選出應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。散列法存儲的基本思想是根據(jù) A 來決定 B ,碰撞(沖突)指的是 C ,處理碰撞的兩類主要方法是 D 。供選擇的答案A,B: 存儲地址 元素的符號 元素個數(shù) 關

9、鍵碼值 非碼屬性 平均檢索長度 負載因子 散列表空間 C: 兩個元素具有相同序號 兩個元素的關鍵碼值不同,而非碼屬性相同 不同關鍵碼值對應到相同的存儲地址 負載因子過大 數(shù)據(jù)元素過多D: 線性探查法和雙散列函數(shù)法 建溢出區(qū)法和不建溢出區(qū)法 除余法和折疊法 拉鏈法和開地址法答案:A B C D 10.【91程P4】考慮具有如下性質的二叉樹:除葉子結點外,每個結點的值都大于其左子樹上的一切結點的值。并小于等于其右子樹上的一切結點的值?,F(xiàn)把9個數(shù)1,2,3,8,9填入右圖所示的二叉樹的9個結點中,并使之具有上述性質。此時,n1的值是 A ,n2的值是 B ,n9的值是 C ?,F(xiàn)欲把放入此樹并使該樹保

10、持前述性質,增加的一個結點可以放在 D 或 E 。供選擇的答案AC: 1 2 3 4 5 6 7 8 9DE: n7下面 n8下面 n9下面 n6下面 n1與n2之間 n2與n4之間 n6與n9之間 n3與n6之間 答案:A B C D E 三、簡答題(每小題4分,共16分)1.【全國專升本題】對分(折半)查找適不適合鏈表結構的序列,為什么?用二分查找的查找速度必然比線性查找的速度快,這種說法對嗎?答:不適合!雖然有序的單鏈表的結點是按從小到大(或從大到?。╉樞蚺帕?,但因其存儲結構為單鏈表,查找結點時只能從頭指針開始逐步搜索,故不能進行折半查找。二分查找的速度在一般情況下是快些,但在特殊情況下

11、未必快。例如所查數(shù)據(jù)位于首位時,則線性查找快;而二分查找則慢得多。2.【計研題1999】假定對有序表:(3,4,5,7,24,30,42,54,63,72,87,95)進行折半查找,試回答下列問題:(1) 畫出描述折半查找過程的判定樹;(2) 若查找元素54,需依次與哪些元素比較?(3) 若查找元素90,需依次與哪些元素比較?(4) 假定每個元素的查找概率相等,求查找成功時的平均查找長度。解:(1) 先畫出判定樹如下(注:mid=ë(1+12)/2û=6):305 633 7 42 87 4 24 54 72 95(2) 查找元素54,需依次與30, 63, 42, 54

12、等元素比較;(3) 查找元素90,需依次與30, 63,87, 95, 72等元素比較;(4) 求ASL之前,需要統(tǒng)計每個元素的查找次數(shù)。判定樹的前3層共查找12×24×3=17次;但最后一層未滿,不能用8×4,只能用5×4=20次,所以ASL1/12(1720)37/123.083. 【全國專升本題】用比較兩個元素大小的方法在一個給定的序列中查找某個元素的時間復雜度下限是什么? 如果要求時間復雜度更小,你采用什么方法?此方法的時間復雜度是多少? 答:查找某個元素的時間復雜度下限,如果理解為最短查找時間,則當關鍵字值與表頭元素相同時,比較1次即可。要想降

13、低時間復雜度,可以改用Hash查找法。此方法對表內每個元素的比較次數(shù)都是O(1)。4. 【計研題1999】設哈希(Hash)表的地址范圍為017,哈希函數(shù)為:H(K)K MOD 16。K為關鍵字,用線性探測法再散列法處理沖突,輸入關鍵字序列: (10,24,32,17,31,30,46,47,40,63,49)造出Hash表,試回答下列問題:(1) 畫出哈希表的示意圖;(2) 若查找關鍵字63,需要依次與哪些關鍵字進行比較?(3) 若查找關鍵字60,需要依次與哪些關鍵字比較?(4) 假定每個關鍵字的查找概率相等,求查找成功時的平均查找長度。解: (1)畫表如下:0123456789101112

14、13141516173217634924401030314647(2) 查找63,首先要與H(63)=63%16=15號單元內容比較,即63 vs 31 ,no;然后順移,與46,47,32,17,63相比,一共比較了6次!(3)查找60,首先要與H(60)=60%16=12號單元內容比較,但因為12號單元為空(應當有空標記),所以應當只比較這一次即可。(4) 對于黑色數(shù)據(jù)元素,各比較1次;共6次;對紅色元素則各不相同,要統(tǒng)計移位的位數(shù)?!?3”需要6次,“49”需要3次,“40”需要2次,“46”需要3次,“47”需要3次,所以ASL=1/11(623×3)17/11=1.5454

15、5454541.55四、分析題(每小題6分,共24分)1. 【嚴題集9.3】畫出對長度為10的有序表進行折半查找的判定樹,并求其等概率時查找成功的平均查找長度。解:判定樹應當描述每次查找的位置:52 81 3 6 9 4 7 102. 【全國專升本考題】在一棵空的二叉查找樹中依次插入關鍵字序列為12,7,17,11,16,2,13,9,21,4,請畫出所得到的二叉查找樹。答: 127 17 2 11 16 21 4 9 13驗算方法: 用中序遍歷應得到排序結果: 2,4,7,9,11,12,13,16,17,213. 【嚴題集9.9】已知如下所示長度為12的表:(Jan, Feb, Mar,

16、Apr, May, June, July, Aug, Sep, Oct, Nov, Dec)(1) 試按表中元素的順序依次插入一棵初始為空的二叉排序樹,畫出插入完成之后的二叉排序樹,并求其在等概率的情況下查找成功的平均查找長度。(2) 若對表中元素先進行排序構成有序表,求在等概率的情況下對此有序表進行折半查找時查找成功的平均查找長度。(3) 按表中元素順序構造一棵平衡二叉排序樹,并求其在等概率的情況下查找成功的平均查找長度。解:4. 選取散列函數(shù)H(key)=(3*key)%11,用線性探測法處理沖突,對下列關鍵碼序列構造一個散列地址空間為010,表長為11的散列表,22,41,53,08,4

17、6,30,01,31,66。解:由題意知,m=11(剛好為素數(shù))地址值鏈接指針022116624133084,7430553646701831910則(22*3)%11=60 (41*3)%11=112 (53*3)%11=145(08*3)%11=22(46*3)%11=126(30*3)%11=82(01*3)%11=03(31*3)%11=85(66*3)%11=902266418305346131012345678910134,7五、算法設計題(4中選3,第1題7分必選,其余每題8分,共23分)1. 已知11個元素的有序表為(05 13 19 21 37 56 64 75 80 88

18、92), 請寫出折半查找的算法程序,查找關鍵字為key的數(shù)據(jù)元素 (建議上機調試)。解:折半查找的C程序有很多參考資料,注意此題要求是整型量。折半查找的一個遞歸算法如下,形式非常簡潔!int Search_Bin_Recursive(SSTable ST, int key, int low, int high) /折半查找的遞歸算法 if(low>high) return 0; /查找不到時返回0 mid=(low+high)/2; if(ST.elemmid.key= =key) return mid; else if(ST.elemmid.key>key) return Sea

19、rch_Bin_Recursive(ST, key, low, mid-1); else return Search_Bin_Recursive(ST, key, mid+1, high); /Search_Bin_Recursive 2. 【嚴題集9.31】試寫一個判別給定二叉樹是否為二叉排序樹的算法,設此二叉樹以二叉鏈表作存儲結構。且樹中結點的關鍵字均不同。解:注意仔細研究二叉排序樹的定義。易犯的典型錯誤是按下述思路進行判別:“若一棵非空的二叉樹其左、右子樹均為二叉排序樹,且左子樹的根的值小于根結點的值,又根結點的值不大于右子樹的根的值,則是二叉排序樹”(劉注:即不能只判斷左右孩子的情況,

20、還要判斷左右孩子與雙親甚至根結點的比值也要遵循(左小右大)原則)。若要采用遞歸算法,建議您采用如下的函數(shù)首部:bool BisortTree(BiTree T, BiTree&PRE),其中PRE為指向當前訪問結點的前驅的指針。(或者直接存儲前驅的數(shù)值,隨時與當前根結點比較)一個漂亮的算法設計如下:int last=0, flag=1; / last是全局變量,用來記錄前驅結點值,只要每個結點都比前驅大就行。int Is_BSTree(Bitree T) /判斷二叉樹T是否二叉排序樹,是則返回1,否則返回0 if(T->lchild&&flag) Is_BSTree(T->lchild); if(T->data<last) flag=0; /與其中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論