數(shù)據(jù)結(jié)構(gòu)單元7查找課件.ppt
《數(shù)據(jù)結(jié)構(gòu)單元7查找課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)單元7查找課件.ppt(48頁珍藏版)》請在匯文網(wǎng)上搜索。
1、國家教學(xué)資源庫建設(shè)項目國家教學(xué)資源庫建設(shè)項目數(shù)據(jù)結(jié)構(gòu)單元單元7 7 查找查找2數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 教學(xué)目標(biāo)教學(xué)目標(biāo)【知識目標(biāo)知識目標(biāo)】了解查找的基本概念掌握順序查找的基本思想、算法實現(xiàn)和查找效率分析掌握二分查找的基本思想、算法實現(xiàn)和查找效率分析掌握分塊查找的基本思想、算法實現(xiàn)和查找效率分析掌握二叉查找樹的插入、刪除、建樹和查找算法及時間性能掌握哈希查找方法、哈希函數(shù)的構(gòu)造和解決沖突的方法【能力目標(biāo)能力目標(biāo)】具有選擇恰當(dāng)?shù)牟樵兯惴ń鉀Q實際問題的能力 單元單元7 7 查找查找3數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 引例描述引例描述高校最低錄取分?jǐn)?shù)線查詢高校最低錄取分?jǐn)?shù)線查詢 該系統(tǒng)用于學(xué)生、學(xué)生家長和其他人員查詢各高校
2、的最低錄取分?jǐn)?shù)線,為他們的了解高校錄取情況、做出正確的選擇和決策提供有必要的信息。該系統(tǒng)有以下六項功能:(1)按考生分?jǐn)?shù)查詢高校信息;(2)按給定分?jǐn)?shù)查詢一定范圍內(nèi)的高校信息,包括:查詢錄取分?jǐn)?shù)線比給定分?jǐn)?shù)高(包括相等)的高校信息和錄取分?jǐn)?shù)線比給定分?jǐn)?shù)低(包括相等)的高校信息;(3)按給定的分?jǐn)?shù)范圍查詢高校信息;(4)能夠添加高校信息;(5)為用戶提供系統(tǒng)幫助,以便更好的使用系統(tǒng);(6)安全退出本系統(tǒng)。演示執(zhí)行演示執(zhí)行 單元單元7 7 查找查找4數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 一、基本概念一、基本概念1查找定義查找定義 給定一個值K,在含有n個結(jié)點(diǎn)的表中找出關(guān)鍵字等于給定值K的結(jié)點(diǎn)。若找到,則查找成功,返回
3、該結(jié)點(diǎn)的信息或該結(jié)點(diǎn)在表中的位置;否則查找失敗,返回相關(guān)的指示信息。2動態(tài)查找表和靜態(tài)查找表動態(tài)查找表和靜態(tài)查找表 若在查找的同時對表做修改操作(如插入和刪除),則相應(yīng)的表稱之為動態(tài)查找表。否則稱之為靜態(tài)查找表。3內(nèi)查找和外查找內(nèi)查找和外查找 若整個查找過程都在內(nèi)存進(jìn)行,則稱之為內(nèi)查找;反之,若查找過程中需要訪問外存,則稱之為外查找。7.1 查找的基本概念查找的基本概念 知識儲備知識儲備單元單元7 7 查找查找5數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 4平均查找長度(平均查找長度(Average Search Length)ASL 查找運(yùn)算的主要操作是關(guān)鍵字的比較,所以通常把查找過程中對關(guān)鍵字需要執(zhí)行的平均比較次數(shù)
4、(也稱為平均查找平均查找長度長度)作為衡量一個查找算法效率優(yōu)劣的標(biāo)準(zhǔn)。平均查找長度平均查找長度 ASL定義:定義:即ASL等于每個結(jié)點(diǎn)的查找概率pi與比較次數(shù)ci的乘積的和。其中:(1)n是結(jié)點(diǎn)的個數(shù);(2)pi是查找第i個結(jié)點(diǎn)的概率。若不特別聲明,認(rèn)為每個結(jié)點(diǎn)的查找概率相等,即pl=p2=pn=1/n;(3)ci是找到第i個結(jié)點(diǎn)所需進(jìn)行的比較次數(shù)。單元單元7 7 查找查找6數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 一、順序查找(一、順序查找(sequential search)順序查找又稱線性查找,是最基本的查找方法之一。順序查找既適用于順序表,也適用于鏈表。1基本思想基本思想 從表的一端開始,順序掃描線性表,依次
5、按給定值kx與關(guān)鍵字(Key)進(jìn)行比較,若相等,則查找成功,并給出數(shù)據(jù)元素在表中的位置;若整個表查找完畢,仍未找到與kx相同的關(guān)鍵字,則查找失敗,給出失敗信息。2基于順序結(jié)構(gòu)的順序查找算法的類型描述基于順序結(jié)構(gòu)的順序查找算法的類型描述 7.2 靜態(tài)查找靜態(tài)查找#define N 20typedef int KeyType;/關(guān)鍵字字段類型定義typedef char OtherdataType;/非關(guān)鍵字字段類型定義typedef structKeyType key;OtherdataType data;NodeType;typedef NodeType SeqListN+1;/0號單元用作監(jiān)
6、視哨單元單元7 7 查找查找7數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 3具體算法具體算法4算法分析算法分析(1)算法中監(jiān)視哨)算法中監(jiān)視哨R0的作用的作用 為了在for循環(huán)中省去判定防止下標(biāo)越界的條件i1,從而節(jié)省比較的時間。(2)成功時的順序查找的平均查找長度)成功時的順序查找的平均查找長度 在等概率情況下,pi=1/n(1in),故成功的平均查找長度為(n+2+1)/n=(n+1)/2,即查找成功時的平均比較次數(shù)約為表長的一半,若K值不在表中,則須進(jìn)行n+1次比較之后才能確定查找失敗。(3)順序查找的優(yōu)缺點(diǎn))順序查找的優(yōu)缺點(diǎn) 優(yōu)點(diǎn)是算法簡單,且對表的結(jié)構(gòu)無任何要求,無論是用向量還是用鏈表來存放結(jié)點(diǎn),也無論結(jié)點(diǎn)之
7、間是否按關(guān)鍵字有序,它都同樣適用。缺點(diǎn)是查找效率低,因此,當(dāng)n較大時不宜采用順序查找。int SeqSearch(Seqlist R,KeyType K)/在順序表R1.n中查找關(guān)鍵字為K的結(jié)點(diǎn)int i;R0.key=K;/設(shè)置哨兵for(i=n;Ri.key!=K;i-);/從表后往前找return i;/若i為0,表示查找失敗,否則Ri是要找的結(jié)點(diǎn) 單元單元7 7 查找查找8數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 2二、二分查找(二、二分查找(binary search)1二分查找:二分查找:二分查找又稱折半查找,它是一種效率較高的查找方法。二分查找要求:二分查找要求:線性表是有序表,即表中結(jié)點(diǎn)按關(guān)鍵字有序,
8、并且要用向量作為表的存儲結(jié)構(gòu)。不妨設(shè)有序表是遞增有序的。2二分查找的基本思想二分查找的基本思想 設(shè)Rlow.high是當(dāng)前的查找區(qū)間。(1)首先確定該區(qū)間的中點(diǎn)位置:mid=(low+high)/2;(2)然后將待查的K值與Rmid.key比較:若相等,則查找成功并返回此位置,否則須確定新的查找區(qū)間,繼續(xù)二分查找,具體方法如下:單元單元7 7 查找查找9數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 若Rmid.keyK,則由表的有序性可知Rmidn.key均大于K,因此若表中存在關(guān)鍵字等于K的結(jié)點(diǎn),則該結(jié)點(diǎn)必定是在位置mid左邊的子表R1mid-1中,故新的查找區(qū)間是左子表R1.mid-1;若Rmid.keyK,類似地,
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
15 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)結(jié)構(gòu) 單元 查找 課件