免費開始練習
moea_joint_essay 106年 [統計資訊] 資料庫及資料探勘、程式設計

第 二 題

📖 題組:
試以設計線上英文字典查詢的搜尋法為例,假設其資料分布均勻,請回答下列問題:(15分)
📝 此題為申論題,共 2 小題

小題 (二)

有一數列:15、1、3、100、50、44、58、46、27、38,如以 50 作為欲搜尋之鍵值,請以上述回答的搜尋法,依序列出於搜尋成功前,各次與鍵值比較的值為何。(未列出算式不計分)(9 分)

思路引導 VIP

先將陣列排序。套用插補搜尋公式 Mid = Low + floor((Target-A[Low])/(A[High]-A[Low]) * (High-Low)) 計算位置並寫出每次比較的陣列值。

🤖
AI 詳解
AI 專屬家教

插補搜尋法必須在已排序好的陣列中進行。因此先將給定數列由小到大排序: 索引(Index): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 排序後數值(A): 1, 3, 15, 27, 38, 44, 46, 50, 58, 100

小題 (一)

常見之搜尋法中,哪一種最適合應用此搜尋,且搜尋時間最有效率(3 分)?並請說明此搜尋法的時間複雜度(3 分)。

思路引導 VIP

依題目「資料分布均勻」的提示,最佳的搜尋法為插補搜尋法(Interpolation Search)。說明其最佳、平均與最差時間複雜度。

🤖
AI 詳解
AI 專屬家教

最適合且最有效率的方法為「插補搜尋法 (Interpolation Search)」。 理由與時間複雜度: 一般排序好的資料常用二元搜尋法(Binary Search)查詢,但當題目明確假設「資料分布均勻(Uniformly Distributed)」時,插補搜尋法能夠依據欲搜尋的鍵值大小,按比例預測資料落點位置(如同查字典時,找'Z'會直接從後方翻找,而非從中間),其效率遠勝二元搜尋法。

🏷️ 相關主題

程式設計演算法與資料結構實作
查看更多「[統計資訊] 資料庫及資料探勘、程式設計」的主題分類考古題