这是我第一次使用这个平台提问。我想知道以下代码有什么问题,它们没有在主代码末尾打印出目标数字的索引。发生了什么?祝那些阅读本文的人度过愉快的一天。
public class binarySearch {
public static void main(String[] args) {
Scanner keyboard=new Scanner(System.in);
int target,index;
int [] numArray={1,4,6,7,8,10,14,16,17,26,30,35,38,41};
System.out.print("What do you want to find?");
target=keyboard.nextInt();
index=binarySearch(numArray, target);
System.out.println("The element is found at index:"+index);
}
static int binarySearch(int [] numArray, int target){
int left=0;
int right=numArray.length-1;
int mid=(left+right)/2;
while(left<=right){
if(numArray[mid]==target){
return mid;
}else if(target<numArray[mid]){
right=mid-1;
}else{
left=mid+1;
}
}
return -1;
}
}
您没有在循环内重新计算mid:
static int binarySearch(int [] numArray, int target){
int left=0;
int right=numArray.length-1;
int mid=(left+right)/2;
while(left<=right){
mid=(left+right)/2;
if(numArray[mid]==target){
return mid;
}else if(target<numArray[mid]){
right=mid-1;
}else{
left=mid+1;
}
}
return -1;
}
问题内容: 我有一个排序的数组,想要对它进行二进制搜索。 所以我想问一下Swift库中是否已有诸如sort等的东西?还是有类型独立版本可用? 当然,我可以自己编写它,但是我想避免再次发明轮子。 问题答案: 这是使用二进制搜索的通用方法:
给定二叉查找树(BST)和整数val的根。 在BST中找到该节点的值等于val的节点,并返回以该节点为根的子树。如果这样的节点不存在,则返回null。 为什么'ans=root'不起作用??
为什么当我看到二进制搜索的示例代码时,从来没有一个if语句来检查数组的开始还是结束是目标? 在本例中,如果目标是-1或20,搜索将进入递归。但是它添加了一个if语句来检查目标是否是mid,那么为什么不添加两个语句来检查它的左边还是右边呢?
本文向大家介绍用C ++程序查找二进制搜索树的最小值,包括了用C ++程序查找二进制搜索树的最小值的使用技巧和注意事项,需要的朋友参考一下 它是一个寻找二叉搜索树的最小值的程序。 演算法 示例 输出结果
二进制搜索是一种快速搜索算法,运行时复杂度为Ο(log n)。 这种搜索算法的工作原则是分而治之。 为使此算法正常工作,数据收集应采用排序形式。 二进制搜索通过比较集合的最中间项来查找特定项。 如果匹配发生,则返回项目的索引。 如果中间项大于项,则在中间项左侧的子阵列中搜索项。 否则,在中间项右侧的子阵列中搜索项。 该过程也在子阵列上继续,直到子阵列的大小减小到零。 二进制搜索如何工作? 要使二进
我正在尝试实现一个二叉查找树,但是“搜索”函数对于除了根之外的每个条目都返回了错误的值。 该函数应返回其值与键参数匹配的节点的地址,如果节点不存在,则返回 NULL。 当我运行代码时,我得到以下内容: 我知道每个节点的“左”和“右”指针链接正确,因为“delAll”函数成功删除了所有节点。 将“cout”语句添加到“search”函数表明该函数似乎返回了正确的地址。为什么从主主调用时会打印错误的地