靜態(tài)查找與動態(tài)查找定義?
靜態(tài)查找定義了:。
靜態(tài)搜索是我們通常概念中的搜索,它是一個"真實搜索"。
靜態(tài)搜索之所以是真正的搜索,是因為在靜態(tài)搜索的過程中,只有"搜索和搜索被執(zhí)行,即:
(1)檢查特定關(guān)鍵字是否在表中(判斷搜索);
(2)檢索特定關(guān)鍵字數(shù)據(jù)元素的各種屬性(檢索搜索)。
這兩個操作只獲取現(xiàn)有表中的數(shù)據(jù)信息,而不對表的數(shù)據(jù)元素和結(jié)構(gòu)進行任何更改,這稱為靜態(tài)查找。
常見的靜態(tài)查找(表):順序查找、二分法查找、索引順序查找(塊查找)、斐波那契查找等。
動態(tài)搜索定義:
動態(tài)查找更像是一個"創(chuàng)建、擴展、修改和刪除"一張桌子。
在動態(tài)查找的過程中,表上還會有兩個操作:
(1)首先,有一個"判斷性搜索和搜索。如果表中不存在某個特定的關(guān)鍵字,它會按照一定的規(guī)則插入到表中;
(2)如果已經(jīng)存在,可以刪除。
雖然動態(tài)查找的過程只是添加"插入"和"刪除"操作,在特定的表上執(zhí)行這兩個操作通常不是那么簡單。
常見的動態(tài)搜索:各種樹(二叉查找樹,AVL,B/B樹,紅黑樹等。)和哈希表。
關(guān)于數(shù)據(jù)結(jié)構(gòu)二分法查找成功的平均查找長度和失敗的查找長度?
做這類題目的時候要畫二叉樹。然后補葉子。葉子的高度是搜索失敗的次數(shù)。然后總和除以葉子數(shù)就是失敗的平均搜索長度。非葉節(jié)點是成功的,高度就是搜索成功的次數(shù),然后除以非葉節(jié)點的次數(shù)就是成功的平均長度。對于11個節(jié)點,二叉樹的搜索成功長度為(1x2x3x4x4)/1133/11,搜索失敗長度為(4x83x4)/(84)44/12。
最早的二分查找代碼什么時候出來的?
推薦答案的代碼有問題,不考慮要搜索的數(shù)字下標為0怎么辦?因此,如果序列表中沒有要檢查的元素,則應(yīng)該返回-1。
另外,主函數(shù)的最后兩行調(diào)用了兩次查找函數(shù),所以代碼不夠簡潔。
建議閱讀:
#inclusiveltstdio.HGT#inclusiveltstdlib.HGTintsearch(int*a,intkey){//在序列表中找到key對半的數(shù)據(jù)元素。如果找到,函數(shù)值是intlow0,mid//這個元素的數(shù)組下標;否則為0。inthigh14while(lowlthigh){mid(lowhigh)/2if(keya[mid])returnmid//找到要搜索的元素elseif(keylta[mid])highmid-1//繼續(xù)搜索elselowmid1//后半部分繼續(xù)搜索}return-1//序列表中沒有要搜索的元素}Voidmain(){int*a,key,iintb[15]{0}abprintf(請輸入15個從小到大的整數(shù):
)for(i1ilt15i){scanf(%d