java - 如果尝试对未排序的数据集进行二分查找,会发生什么情况?

标签 java binary-search

<分区>

如果尝试对未排序的数据集进行二分查找会怎样?

最佳答案

结果是不可预测的。如果数据集有目标,则可能会找到也可能找不到。

编辑 为了好玩,我做了一个小实验。首先,我选择了一个数组大小并生成了一个 int 数组 {0, 1, ..., size-1}。然后我打乱了数组,对每个值 0、1、...、size-1 进行了二进制搜索,并计算找到了多少个。对于每种尺寸,我重复洗牌/搜索每个值步骤 100,000 次并记录成功搜索的百分比。 (对于排序数组,这将是 100%。)结果是(四舍五入到最接近的百分比):

Size    % Hit
 10      34%
 20      22%
 30      16%
 40      13%
 50      11%
 60      10%
 70       9%
 80       8%
 90       7%
100       6%

所以数组越大,不排序的效果越差。即使对于相对较小的阵列,结果也相当剧烈。

关于java - 如果尝试对未排序的数据集进行二分查找,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255805/

相关文章:

java - 将 Java 构造函数与 Hibernate 查询结合使用

Java - 使用泛型或继承

java - 拆分逗号分隔忽略最后一项

algorithm - 在循环排序数组中搜索元素

c - 删除C中的节点

java - 安全整数中值公式

java - 如何将 Java Map 序列化为 PHP 的数组序列化格式

java - 在排序矩阵中查找元素

c++ - binary_search 不适用于 vector <string>

java - Wildfly - 如何在 Windows 上以域模式安装