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