【发布时间】:2021-01-24 20:41:47
【问题描述】:
如果给定一个未排序的数组,在以下两种情况中,它的时间复杂度会更小或性能会更好
- 二分查找 - 首先对数组进行排序,然后使用二分查找算法
- 顺序搜索 - 在未排序的数组上
所以如果给定一个未排序的数组来搜索一个元素,我们应该先对它进行排序然后应用二分搜索还是直接对未排序的数组应用顺序搜索算法。
【问题讨论】:
-
视情况而定。如果只询问一个查询,顺序搜索应该更好。如果一个数组有很多查询,只需要排序一次,使用二分查找更好。
-
换个角度看:为什么一开始就用数组来搜索东西?将数据保存在哈希表 (
<unordered_set>) 中将为您提供恒定的访问时间(以插入为代价)。 -
对于小数据集,顺序搜索优于二分搜索,尤其是在数据未排序的情况下。
标签: c++ algorithm sorting search binary-search