Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 用O(logn)查找数组中的最小数_Algorithm - Fatal编程技术网

Algorithm 用O(logn)查找数组中的最小数

Algorithm 用O(logn)查找数组中的最小数,algorithm,Algorithm,我的排序数组由S[I]=(a*I)+b表示 但是,我正在移除数组中的一个元素,我的目标是找到已移除的元素(通过检查数组中的元素是否一个常见的误解是-如果你有一个排序数组,你可以对其应用二进制搜索。这实际上取决于问题。如果你想用二进制搜索解决问题,二进制搜索需要满足特定的属性 对于您的任务,二进制搜索应该查找不满足a x i+b等式的第一个元素 比如说,我们的二进制搜索使用一个函数check\u valid(i),它检查s[i]==a x i+b,它返回true或false 现在,为了满足二进制搜

我的排序数组由S[I]=(a*I)+b表示


但是,我正在移除数组中的一个元素,我的目标是找到已移除的元素(通过检查数组中的元素是否一个常见的误解是-如果你有一个排序数组,你可以对其应用二进制搜索。这实际上取决于问题。如果你想用二进制搜索解决问题,二进制搜索需要满足特定的属性

对于您的任务,二进制搜索应该查找不满足
a x i+b
等式的第一个元素

比如说,我们的二进制搜索使用一个函数
check\u valid(i)
,它检查
s[i]==a x i+b
,它返回true或false

现在,为了满足二进制搜索的条件,当我们线性运行
check\u valid
时(从1到
n
),输入数组必须具有以下结构

真,真,真,真,…假,假,假,假

(看,对于您的情况,您的数组甚至不需要排序,但它应该遵循以下属性:对于索引
k
,在
k
之前的每个元素都满足该等式,在
k
之后的每个元素都不满足该等式) 这意味着只有当索引后的所有元素不满足
S[i]=a x i+b
时,二进制搜索才适用,否则必须运行线性搜索

您应该了解的另一件事是,数组中有
n
元素,即使输入是
O(n)
,也无法对数组应用任何预处理


如果数组没有该属性,则没有
log(n)< /代码>解决方案。

你想要最小的数字?还是公式不成立的第一个索引?因为你可以看到这个例子,有时答案不在第一个索引中,而是在第四个索引中。我编辑了一个更清晰的帖子。请再次考虑编辑。你说数组是由S[i] =(ai)+b制定的。然后你要求找到一个元素S[i]≠ (ai)+b、 这没有意义。根据数组的定义,没有这样的元素。我可以猜出你的意思,就像扎比尔·纳粹主义所做的那样,但是一个明确的问题会更好。在编程中,明确的问题是成功和灾难的区别。实际上,我正在移除数组中的一个元素,我的目标是找到哪个元素已删除。对于运行时间,如果我们运行check_valid linear(从1到n),运行时间应该是O(n)?我正在寻找一种算法来解决这个问题,运行时间=O(logn),数组中没有任何项更改,谢谢你的回答。你能确认我提到的属性吗?如果没有,就没有
log(n)
为您的任务提供解决方案。非常感谢您的回答,我已经非常清楚并解决了!