資料結構(三) 有序表查詢(二分查詢到二叉樹)

2021-09-27 02:46:36 字數 762 閱讀 3903

這次更新資料結構查詢的部分,先上乙個查詢的思維導圖,有乙個巨集觀認識

今天要分享的主題就是導圖中用紅框括起來的地方,二分查詢的題用二叉樹去解決,這個**於最近做資料結構自考題,把這個題先寫出來

對有序順序表(7,12,15,18,27,32,46,65,83)用二分查詢,若查詢成功,則查詢所需比較次數最多的鍵值是?

剛開始看到這道題時,完全懵,說了個啥玩意。仔細研究發現,題描述的意思是,在這個順序表中找到乙個其中值,經過中間值對比次數最多的值是多少

我們知道在書本上,應用二分查詢是通過low high兩個指標對應的鍵值找出中間值,讓這個中間值與要找的值對比,直到找到位置,這就需要將整個順序表所有資料找一遍,很麻煩,有沒有簡單方法,有的!是什麼?

將二分查詢用二叉排序樹實現,比如將題中的順序表寫成二叉排序樹的形式

而27,12,46取得便是二分查詢中mid得值

從圖中可以直觀的看出,找到18,83的路徑最長,即經過的比較次數最多,因此18,83就是答案

當將二分查詢轉化為二叉排序樹時,就可以不用二分查詢的平均查詢公式(關鍵帶log運算費事)

用二叉排序樹的平均查詢長度公式時,假設查詢概率相等

則asl=(1+2*2+2*3+2*4)/9=19/9

參考部落格

資料結構 有序陣列二分查詢

查詢 檢查陣列中是否存在某個值,如果存在,返回其索引。ls 10,22,43,55 ls.index 22 不用內建函式,手動實現二分查詢。要求輸入的列表是從小到大排好序的。def binarysearch ls,val ls.sort lower 0 upper len ls 1 while lo...

資料結構 二分查詢

二分查詢演算法也稱為折半搜尋 二分搜尋,是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為...

資料結構 二分查詢

總共有n個元素,漸漸跟下去就是n,n 2,n 4,n 2 k 接下來操作元素的剩餘個數 其中k就是迴圈的次數。由於你n 2 k取整後 1,即令n 2 k 1,可得k log2n,是以2為底,n的對數 所以時間複雜度可以表示o o logn public class binarysearch else...