[英]Binary search vs simple search
根據算法書籍,二進制搜索的性能是O(log n),而對於簡單搜索,它是O(n)。
但是為什么我們也不考慮分揀的時間,這是二元搜索的先決條件?
簡而言之 :因為通常構建該列表只進行一次,而搜索(和更新)則多次完成。
構造排序列表確實需要O(n log n) 。 使用二進制搜索的關鍵是,一旦對集合進行排序,我們就可以對該列表執行多個查詢,每個查詢都有O(log n) 。
此外,如果您使用二進制搜索樹,您也可以在O(log n)中執行插入和刪除元素,因此更新集合也可以很便宜(假設您使用有效的數據結構)。
例如,在數據庫中,經常使用索引來執行快速查找。 通常,與更新次數相比,讀取次數較多。 更新單個元素需要O(log n) ,因此在現有數據上創建索引確實很昂貴,但與搜索和更新B樹數據結構[wiki]相比,這並不常見。
假設數據將被存儲已經排序。 由於每次執行搜索時都不需要對數據進行重新排序,因此不會在Big O中對其進行計算。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.