Algorithm 二进制搜索与简单搜索
根据算法书籍,二进制搜索的性能是O(logn),而简单搜索的性能是O(n)Algorithm 二进制搜索与简单搜索,algorithm,sorting,search,binary-search,Algorithm,Sorting,Search,Binary Search,根据算法书籍,二进制搜索的性能是O(logn),而简单搜索的性能是O(n) 但是,我们为什么不考虑排序所花费的时间,这是二进制搜索的先决条件?假定数据将存储在已排序的数据中。由于数据不需要在每次执行搜索时重新排序,因此在大O中不考虑数据。简言之:因为构建该列表通常只进行一次,而搜索(和更新)则进行多次 构造排序列表确实需要O(n logn)。使用二进制搜索的意义在于,一旦对集合进行了排序,我们就可以对该列表执行多个查询,每个查询都带有O(logn) 此外,如果使用二元搜索树,还可以执行O(log
但是,我们为什么不考虑排序所花费的时间,这是二进制搜索的先决条件?假定数据将存储在已排序的数据中。由于数据不需要在每次执行搜索时重新排序,因此在大O中不考虑数据。简言之:因为构建该列表通常只进行一次,而搜索(和更新)则进行多次 构造排序列表确实需要O(n logn)。使用二进制搜索的意义在于,一旦对集合进行了排序,我们就可以对该列表执行多个查询,每个查询都带有O(logn) 此外,如果使用二元搜索树,还可以执行O(logn)中元素的插入和删除,因此更新集合也可以很便宜(假设使用有效的数据结构)
例如,在数据库中,经常使用索引执行快速查找。通常,读取的数量比更新的数量大。更新单个元素需要O(logn),因此在现有数据上创建索引确实很昂贵,但与搜索和更新单个元素相比,这并不常见。二进制搜索将此作为先决条件。其思想是对列表/数组进行一次排序,然后可以执行多个搜索查询。