20172323 2018-2019-1 《程序設計與數據結構》課堂做業報告

20172323 2018-2019-1 《程序設計與數據結構》課堂做業報告

課程:《程序設計與數據結構》
班級: 1723
姓名: 王禹涵
學號: 20172323
實驗教師:王志強老師
測試日期:2018年10月
必修/選修: 必修算法

1.測試內容

ASL測試
已知線性表具備元素{5,13,19,21,37,56,64,75,80,88,92},若是使用折半查找法,ASL是多少?數據結構

2. 解題原理及過程

  • 二分查找(折半查找):當查找池中的項目組是已排序的,那麼利用二分查找將會更有效率。
    • 二分查找的思路: 二分查找從排序列表的中間開始查找,若是中間元素不是目標元素,根據兩個元素的大小關係,再判斷從列表的前一半或是後通常進行查找。每次的查找都是從當前一串數字的中間元素開始的。直到最後找到該元素或是沒有找到拋出一個信息。
    • 二分查找的每次比較都會刪除一半的可行候選項,當查找池中有偶數個待查找值時,選擇的是兩個中間值的第一個。
  • ASL: 所謂ASL是指在查找過程當中,爲肯定記錄在查找表中的位置,需和給定值進行比較的記錄關鍵字個數的平均值。測試

    • 折半查找的過程能夠用二叉樹來描述,樹中的每一個結點對應有序表中的一個記錄,結點的值爲該記錄在表中的位置。
  • 解題:在本題中,線性表具備元素{5,13,19,21,37,56,64,75,80,88,92},能夠畫出計算機執行折半查找的順序設計

位置 0 1 2 3 4 5 6 7 8 9 10 11
元素 ... 05 13 19 21 37 56 64 75 80 88 92
順序 ... 3 4 2 3 4 1 3 4 2 3 4

二叉樹如圖所示
blog

因此順序爲1的結點一個,2有兩個,3有四個,4有四個。
ASL=(1+2x2+3x4+4x4) / 11 = 33/11= 3排序

PS:查閱折半查找ASL的算法時,文章給出了另外一種ASL的算法

這種算法適用於n較大時的狀況table

相關文章
相關標籤/搜索