人人网笔试题一道

来源:互联网 发布:特种兵小说 知乎 编辑:程序博客网 时间:2024/06/10 16:02

乱序存储10个大小连续的自然数(如6,1,2,3,9,4,5,7,0,8)中随机抽取一个,根据余下的数,如何判定被抽取数的值?如果有1000万或更多自然数时,判定被抽取数的值时,也用同样的方法吗?思路:采用类二分的方法

假设原始数列为 a[1000000],取走后数据形成的数列为b[1000000-1]

对于数列a来说,la =0,ha=10000000

对于数列b来说,lb =0,hb=10000000-1
采取二分法,第一次二分,

如果a[ha/2]==b[hb/2],那么取走的数据位于[ha/2,ha]之间

若不相等,则位于[0,ha/2]之间

继续迭代。


原创粉丝点击