数据结构:二叉查找树 BST 平均查找长度 ASL 的计算
平均查找長(zhǎng)度
ASL(Average Search Length),即平均查找長(zhǎng)度,在查找運(yùn)算中,由于所費(fèi)時(shí)間在關(guān)鍵字的比較上,所以把平均需要和待查找值比較的關(guān)鍵字次數(shù)稱為平均查找長(zhǎng)度。
它的定義是這樣的:
其中n為查找表中元素個(gè)數(shù),Pi為查找第i個(gè)元素的概率,通常假設(shè)每個(gè)元素查找概率相同,Pi=1/n,Ci是找到第i個(gè)元素的比較次數(shù)。
順序查找平均查找長(zhǎng)度的計(jì)算
在順序查找(Sequence Search)表中,查找方式為從頭掃到尾,找到待查找元素即查找成功,若到尾部沒有找到,說明查找失敗。
所以說,Ci(第i個(gè)元素的比較次數(shù))在于這個(gè)元素在查找表中的位置,如第0號(hào)元素就需要比較一次,第一號(hào)元素比較2次…第n號(hào)元素要比較n+1次。所以Ci=i;所以
查找成功 的平均查找長(zhǎng)度:
查找失敗 的平均查找長(zhǎng)度:
折半查找平均查找長(zhǎng)度的計(jì)算
折半查找(Binary Search),首先待查找表是有序表,這是折半查找的要求。在折半查找中,用二叉樹描述查找過程,查找區(qū)間中間位置作為根,左子表為左子樹,右子表為右子樹,因?yàn)檫@顆樹也被成為判定樹(decision tree)或比較樹(Comparison tree)。
查找方式為(找k):先與樹根結(jié)點(diǎn)進(jìn)行比較,若k小于根,則轉(zhuǎn)向左子樹繼續(xù)比較,若k大于根,則轉(zhuǎn)向右子樹,遞歸進(jìn)行上述過程,直到查找成功或查找失敗。
在n個(gè)元素的折半查找判定樹中,由于關(guān)鍵字序列是用樹構(gòu)建的,所以查找路徑實(shí)際為樹中從根節(jié)點(diǎn)到被查結(jié)點(diǎn)的一條路徑,因?yàn)楸容^次數(shù)剛好為該元素在樹中的層數(shù)。所以:
查找成功 的平均查找長(zhǎng)度:
其中,Pi為查找k的概率,level(Ki)為k對(duì)應(yīng)內(nèi)部結(jié)點(diǎn)的層次。而在這樣的判定樹中,會(huì)有n+!種查找失敗的情況,因?yàn)閷⑴卸錁?gòu)建為完全二叉樹,又有n+1個(gè)外部結(jié)點(diǎn)(用Ei(0<=i<=n)表示)
查找失敗 的平均查找長(zhǎng)度:
qi表示查找屬于Ei中關(guān)鍵字的概率,level(Ui)表示Ei對(duì)應(yīng)外部結(jié)點(diǎn)的層次。
在一顆有n個(gè)結(jié)點(diǎn)判定樹中,
例子:計(jì)算二叉查找樹的平均查找長(zhǎng)度
例:給11個(gè)數(shù)據(jù)元素有序表(2,3,10,15,20,25,28,29,30,35,40)采用折半查找。則ASL成功和不成功分別是多少?
先畫出判定樹,
查找成功 的平均查找長(zhǎng)度:
查找失敗 的平均查找長(zhǎng)度:
參考:https://www.cnblogs.com/ygsworld/p/10238729.html
超強(qiáng)干貨來襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
以上是生活随笔為你收集整理的数据结构:二叉查找树 BST 平均查找长度 ASL 的计算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构:链式基数排序,通俗易懂!
- 下一篇: 数据结构:严蔚敏、殷人昆快速排序规则不同