資料結構 第七章 查詢 作業(已批改)

2021-10-07 15:04:37 字數 4086 閱讀 9590

1-1

將m個元素存入用長度為s的陣列表示的雜湊表,則該錶的裝填因子為m/s。

t f

課本p226:雜湊表的裝填因子 α 定義為 =表中填入的記錄數 / 雜湊表的長度;

1-2

即使把2個元素雜湊到有100個單元的表中,仍然有可能發生衝突。

t f

本題主要是考察雜湊(hash)函式是可以改變的,衝突的選擇是根據函式的選取;

課本p223:選擇乙個「好」的雜湊函式可以在一定程度上減少衝突,但在實際應用中,很難完全避免發生衝突,所以選擇乙個有效的處理衝突的方法是雜湊法的另乙個關鍵問題;

1-3

將 10 個元素雜湊到 100 000 個單元的雜湊表中,一定不會產生衝突。

t f

由於雜湊函式的選取,仍然有可能產生位址衝突,衝突不能絕對地避免;

同 1-2;

2-1

已知乙個長度為16的順序表l,其元素按關鍵字有序排列。若採用二分查詢法查詢乙個l中不存在的元素,則關鍵字的比較次數最多是:

a. 4

b. 5

c. 6

d. 7

二分查詢的最大比較次數是

log(16) + 1 = 4 + 1 = 5;

2-2

用二分查詢從100個有序整數中查詢某數,最壞情況下需要比較的次數是:

a. 7

b. 10

c. 50

d. 99

二分查詢的最大比較次數是

2 ^ 6 = 64;

log(100) + 1 = 6 + 1 = 7;

2-3

在下列查詢的方法中,平均查詢長度與結點個數無關的查詢方法是:

a. 順序查詢

b. 二分法

c. 利用雜湊(雜湊)表

d. 利用二叉搜尋樹

雜湊表查詢法的特點是平均查詢長度與結點個數n無關;

2-4

將10個元素雜湊到100000個單元的雜湊表中,是否一定產生衝突?

a. 一定會

b. 可能會

c. 一定不會

d. 有萬分之一的可能會

2-5設雜湊表的位址區間為[0,16],雜湊函式為h(key)=key%17。採用線性探測法處理衝突,並將關鍵字序列依次儲存到雜湊表中。元素59存放在雜湊表中的位址是:

a. 8

b. 9

c. 10

d. 11

課本p223:線性探測法:這種探測方法可以將雜湊表假想成乙個迴圈表,發生衝突時,從衝突位址的下一單元順序尋找空單元,如果到最後乙個位置也沒找到空單元,則回到表頭開始繼續查詢,直到找到乙個空位,就把此元素放入此空位中。如果找不到空位,則說明雜湊表已滿,需要進行溢位處理。

過程:26 % 17 = 9,所以位址9存放26;

25 % 17 = 8,所以位址8存放25;

72 % 17 = 4,所以位址4存放72;

38 % 17 = 4,因為位址4衝突,往下移動乙個單元,所以位址5存放38;

8 % 17 = 8,因為位址8衝突,往下移動乙個單元,又因為位址9衝突,往下移動乙個單元,所以位址10存放8;

18 % 17 = 1,所以位址1存放18;

59 % 17 = 8,因為位址8衝突,往下移動乙個單元,又因為位址9衝突,往下移動乙個單元,又又因為位址10衝突,往下移動乙個單元,所以位址11存放59;

2-6

從乙個具有n個結點的單鏈表中查詢其值等於x的結點時,在查詢成功的情況下,需平均比較多少個結點?

a. n/2

b. n

c. (n−1)/2

d. (n+1)/2

從乙個具有n個節點的單鏈表中查詢其值等於x的節點,在查詢成功的情況下,平均需要比較(n+1)/2個節點。

由於單鏈表只能進行單向順序查詢,以從第乙個節點開始查詢為例,查詢第m個節點需要比較的節點數f(m)=m,查詢成功的最好情況是第一次就查詢成功,只用比較1個節點,最壞情況則是最後才查詢成功,需要比較n個節點。

所以一共有n種情況,平均下來需要比較的節點為(1+2+3+…+(n-1)+n)/n=(n+1)/2。

課本p193;

2-7

對乙個長度為 10 的排好序的錶用二分法查詢,若查詢不成功,至少需要比較的次數是()。

a. 4

b. 3

c. 5

d. 6

畫乙個二叉排序樹,一比就出來了.去找樹的深度.

所以至少是幾次??疑惑??

7-1 航空公司vip客戶查詢 (25分)不少航空公司都會提供優惠的會員服務,當某顧客飛行里程累積達到一定數量後,可以使用里程積分直接兌換獎勵機票或獎勵公升艙等服務。現給定某航空公司全體會員的飛行記錄,要求實現根據身份證號碼快速查詢會員里程積分的功能。

輸入格式:

輸入首先給出兩個正整數n(≤10^​5)和k(≤500)。其中k是最低里程,即為照顧乘坐短程航班的會員,航空公司還會將航程低於k公里的航班也按k公里累積。隨後n行,每行給出一條飛行記錄。飛行記錄的輸入格式為:18位身份證號碼(空格)飛行里程。其中身份證號碼由17位數字加最後一位校驗碼組成,校驗碼的取值範圍為0~9和x共11個符號;飛行里程單位為公里,是(0, 15 000]區間內的整數。然後給出乙個正整數m(≤10^​5),隨後給出m行查詢人的身份證號碼。

輸出格式:

對每個查詢人,給出其當前的里程累積值。如果該人不是會員,則輸出no info。每個查詢結果佔一行。

輸入樣例:

4 500

330106199010080419 499

110108198403100012 15000

120104195510156021 800

330106199010080419 1

4120104195510156021

110108198403100012

330106199010080419

33010619901008041x

輸出樣例:

800

15000

1000

no info

#include

#include

#include

#include

using

namespace std;

#define maxn 10005

typedef

long

long ll;

/*hash表

*/typedef

struct node

*list;

typedef

struct tb

*hashlist;

ll hash

(char key[

],ll size)

return tmp;

}ll nextprim

(ll x)

}hashlist init

(ll size)

return h;

}list find

(char key[

],hashlist h)

void

insert

(char key[

],ll miles,hashlist h)

else

}int

main()

scanf

("%lld"

,&m)

;for

(ll j=

0;j)}

資料結構第七章查詢

判斷題 1 1在雜湊中,函式 插入 和 查詢 具有同樣的時間複雜度。t 1 2當記錄個數小於雜湊表長度時,雜湊查詢平均查詢長度必然為0。f 1 3用向量和單鏈表表示的有序表均可使用折半查詢方法來提高查詢速度。f 1 4有n個數存放在一維陣列a 1 n 中,在進行順序查詢時,這n個數的排列有序或無序其...

資料結構 第七章 查詢

查詢的目的是從給定的同一型別的資料集合中,找出人們所需要的資料元素 或記錄 基本術語 記錄 record 關鍵字 keyword 主關鍵字 primarykey 次關鍵字 secondary key 查詢表 searching table 動態查詢 dynamic searching 靜態查詢 st...

資料結構 第七章 查詢技術

第七章 查詢技術 學習重點 1 折半查詢的過程及效能分析 2 二叉排序樹的插入,刪除和查詢操作 3 平衡二叉樹的調整方法 4 雜湊表的構造和查詢方法 5 各種查詢技術的時間效能及對比。學習難點 1 二叉排序樹的刪除操作 2 平衡二叉樹的調整方法 3 閒雜湊表的刪除演算法。7.1 概述 7.1.1 查...