【发布时间】:2020-05-19 16:46:36
【问题描述】:
我一直在 Coursera 上参加 DSA 课程,本周我学习了搜索算法。而二分查找的复杂度(O(logn))优于线性查找的复杂度(O(n))。但是,考虑到首先对数组进行排序需要 nlogn 工作,我为什么要在未排序的数组中使用它。
如果只在数组已经排序的地方使用二分查找,那为什么要经常比较这两种算法,因为显然它们有不同的用例。
【问题讨论】:
-
因为经过一个排序步骤O(n log n),您可以进行数千个查询。这基本上就是数据库索引的用途。请注意,将元素添加到 AVL 树需要 O(log n).
-
@WillemVanOnsem:我相信当查询数 >n 时最适用(承认 >n 在算法复杂性方面是模糊定义的)
-
@MooingDuck:从查询数量大于 O(log n) 的那一刻起,人们就期待性能提升。
标签: algorithm sorting binary-search linear-search