如何解决哪一个对未排序的数据执行更好的二进制搜索或顺序搜索
如果给定未排序的数组,则在以下两种情况下,它们的时间复杂度较小或性能更好
- 二进制搜索-首先对数组进行排序,然后使用二进制搜索算法
- 顺序搜索-在未排序的数组上
因此,如果给定一个未排序的数组来搜索元素,我们应该去对其进行排序,然后对不排序的数组应用二进制搜索或直接应用顺序搜索算法。
解决方法
两者之所以存在,是因为两者都有自己的用处。
如果仅搜索一次,则顺序搜索最快。但是,如果您执行许多查询,则二进制搜索会更快。假设排序为O(n log(n))
,那么如果必须执行O(log(n))
搜索,二进制搜索将变成相同数量的操作。
但是,操作创建不相等。特别地,二进制搜索需要对分支预测很难进行的是/否问题。结果,如果要搜索的列表少于100个整数,则二进制搜索可能比顺序搜索要慢,因为二进制搜索具有多个流水线停顿(每个错误的二进制选择),而顺序搜索只有一个(当您会找到所需的元素)。
因此,如果您要进行许多查找,并且您有很多数据或复杂数据(例如字符串),则二进制搜索会更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。