做了个分析名字含义的小网站,希望各位给点建议 |
@ycvhbk 因为用专业知识答不出来
要快速找到放了糖的杯子,可以使用二分查找法。以下是计算方法:
将1000杯水按顺序编号为1至1000。
选择中间的杯子(例如杯子500)。
检查杯子500中是否有糖。如果有糖,停止搜索,找到放了糖的杯子。
如果杯子500中没有糖,确定糖在500左侧或右侧。
如果糖在500左侧,将范围缩小到杯子1至499,然后跳转到步骤2。
如果糖在500右侧,将范围缩小到杯子501至1000,然后跳转到步骤2。
重复步骤2至6,直到找到放了糖的杯子。
使用二分查找法可以快速排除大部分杯子,并在对数时间内找到放了糖的杯子。在这个例子中,最多需要log2(1000)≈10次查找就能找到放了糖的杯子。
对于给定的情况,使用二分查找法是一种非常高效的方法。二分查找法的时间复杂度是O(log n),其中n是元素数量。在这种情况下,我们有1000个杯子,因此最多需要约log2(1000)≈10次查找才能找到放了糖的杯子。
二分查找法利用了元素的有序性,每次排除一半的元素,因此可以在较少的比较次数下找到目标元素。相比于线性搜索方法,如逐个检查每个杯子,二分查找法的效率更高。
然而,如果有其他额外的信息可以利用,比如糖的重量、杯子之间是否可以比较,或者更复杂的搜索方法,可能存在更快的方法。但在给定的条件下,二分查找法是一种快速且可行的方法。
2分法最大的弊端是后一次需要依赖前一次的结果,如果这个检测需要时间,那么2分法要等待10次检测的时间,是个串行的,相当于10步每一步都得一步步走;
但如果用我下面这种方法,可以并行的,只需要等一次检测的时间就可以知道哪一杯是甜的。
将1000个杯子,从0到999 排好序,并且用2进制数字来表示,然后取出10个空杯子。
第一个空杯子,把排好序的杯子里,取出 从低位到高位第1位为1的杯子里的水,装入第1个空杯,例如第1、3、5、7...
第二个空杯子,把排好序的杯子里,取出 从低位到高位第2位为1的杯子里的水,装入第1个空杯,例如第2、6、10、14...
...
第十个空杯子,把排好序的杯子里,取出 从低位到高位第10位为1的杯子里的水,装入第1个空杯,例如第512、513、514、515
然后把这十个装了混合液的杯子拿去检测,哪一个杯子检测是甜的,则对该位置1,例如十个杯子,分别是
不甜、不甜、不甜、不甜、不甜、甜、甜、甜、甜、甜
则形成的二进制数是:1111100000
最终,第1111100000 (10进制是992) 个杯子里的水是甜的。
@huster911 @tiandishi
这两个好使,简便易用具备实际操作性,其他的各种分法理论性太强,不好实地操作。
过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号