在二进制搜索中找到目标时的猜测总数
Total number of guesses when it has found the target in Binary seach
这是请求为了帮助可视化搜索所需的时间,请添加一个println()语句,该语句显示查找结果所需的猜测总数。
当函数找到目标时,它应该只打印猜测的总数。您的函数不应该打印每个循环的猜测次数。
注意:二进制搜索数组素数上的目标值41需要1个猜测。
我的代码
var doSearch = function(array, targetValue) {
var min = 0;
var max = array.length - 1;
var guess;
var count = 0;
while(min <= max) {
guess = Math.floor((max + min)/2);
count ++;
if(array[guess] === targetValue) {
println(guess);
println(count ++);
return guess;
}
//again
else if (targetValue < array[guess]){
max = guess - 1;
}
else {
min = guess + 1;
}
}
return -1;
};
var primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];
var result = doSearch(primes, 73);
println("Found prime at index " + result);
Program.assertEqual(doSearch(primes, 73), 20);
通知仍然错误看起来您正在增加每个子句中的猜测次数。试着在一个地方增加猜测的次数。
我做错了什么?
// Full answer
var doSearch = function(array, targetValue) {
var min = 0;
var max = array.length - 1;
var guess;
var count = 0;
while (max >= min) {
guess = Math.floor((max + min)/2);
count++;
if (array[guess] === targetValue) {
println(guess);
println(count);
return guess;
}
else if (array[guess] < targetValue) {
min = guess + 1;
println(array[guess]);
}
else {
max = guess - 1;
println(array[guess]);
}
}
return -1;
};
var primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];
var result = doSearch(primes, 73);
println("Found prime at index " + result);
Program.assertEqual(doSearch(primes, 73), 20);
相关文章:
- 用程序搜索JQuery数据表中的文本
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- 用于搜索的聚合物嵌套绑定
- 在javascript中搜索具有重复值的两个数组中的匹配值
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 使用javascript搜索具有用户输入的数组
- 淘汰搜索/筛选
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 搜索api在mac上显示对话框
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- Href:当前DIV中的目标ID
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 谷歌水印未显示在自定义搜索框中
- 在javascript中搜索项目列表的性能
- 正在搜索JavaScript日期选择器滑块
- 在二进制搜索中找到目标时的猜测总数