Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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
Sorting 排序无限二进制数组中第一次出现1_Sorting_Search - Fatal编程技术网

Sorting 排序无限二进制数组中第一次出现1

Sorting 排序无限二进制数组中第一次出现1,sorting,search,Sorting,Search,对于有限大小的数组,我们可以使用二进制搜索在O(log(n))时间内得到解 如果我们有一个无限数组,索引的查找时间是恒定的,那么如果我们知道数组已排序,我们能以多快的速度找到第一个出现的1?上面的问题是什么?您对无限数组的操作是什么?O(1)查找?也许最好的办法是对一些n进行迭代,直到索引2^n中的1第一次出现,然后进行二进制搜索。然后保证在O(log(n))中找到它,其中n是第一个索引的位置 编辑:Ps。如果数组确实是无限的且只包含零,则不保证终止此操作。考虑到无限数组在有限环境中不作为PC存

对于有限大小的数组,我们可以使用二进制搜索在O(log(n))时间内得到解


如果我们有一个无限数组,索引的查找时间是恒定的,那么如果我们知道数组已排序,我们能以多快的速度找到第一个出现的1?

上面的问题是什么?您对无限数组的操作是什么?O(1)查找?也许最好的办法是对一些n进行迭代,直到索引2^n中的1第一次出现,然后进行二进制搜索。然后保证在O(log(n))中找到它,其中n是第一个索引的位置


编辑:Ps。如果数组确实是无限的且只包含零,则不保证终止此操作。

考虑到无限数组在有限环境中不作为PC存在,我会将其重新标记为作业。到目前为止,您尝试了什么?向我们展示您在这方面的努力,以便我们能够适当地解决。这是一个面试问题。请不要认为我错了谢谢巴特,注意到了。@ranganath111作业问题,面试问题,没关系。试着自己解决,告诉我们你被困在哪里了。在这个网站上,我们通常不会为你做你的工作。我们将帮助您解决您面临的实际问题。在它当前的公式中,这不是一个很好的问题。不,首先你做指数,基本上你尝试指数1,2,4,8,16,32等。然后当你找到一个,例如在4096=2^12,你在2^11=2048和2^12=4096之间进行二元搜索。换句话说,你尝试建立第一个有用的中点(例如,where值(index)>使用指数增长的索引搜索(U值)。