JAVA 程式設計與資料結構 第二十章 Searching
Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case 演算速度為,因 為必須要比較 n 次。 如果一個 file 內的 records 是根據某一個 key 排序好的, 那麼在某些方面的搜尋顯然會加快速度。 好比說 records 根據日期排序,那麼如果我們想要找 出某一段時間內的資料,那麼只要找到起始的時間, 然後一直到結束的時間之間便都是我們要尋找的資 料,而且搜尋便可在此停止。
Binary Search 當我們在搜尋一個排序好的 file 時,可先 搜尋中間的物件,如果欲搜尋的 key 小於 中間物件的 key ,那麼便將 Array 分為前 後兩段,然後以相同的方式開始搜尋前 面一段(反之則搜尋後面一段),使用 相同的步驟直到找到欲尋找的物件(或 是確定該物件不存在此 file ),如此可得 到的演算速度。
What to use? 將一個 file 排序好然後使 用 Binary Search 與一個 未排序的 file 使用 Sequential Search 相比 較,那樣作法會較快呢? 答案視欲搜尋的資料個 數而定。 亦即 Sort + Binary Search < Sequential Search? 假設有 n = 64 ,那麼 s 至 少為多少才會讓 Sort + Binary Search 的速度快 於 Sequential Search ?可 得到: 也就是說至少要搜尋 7 次 才顯出其搜尋快速的功效。