二分查找代码行
Binary search line of code
我一直在努力学习二进制搜索的工作原理,所以我搜索了一段代码并试图理解每一行的作用。我不明白这一行。带有 "return -1" 的行。我不明白那是什么意思。有人可以解释那行代码中发生了什么吗?
#include<stdio.h>
int binarySearch(int array[], int size, int searchValue){
int low = 0;
int high = size - 1;
while(low<=high){// is the array exhausted?
int mid = (low + high) / 2; //If not, find the middle index
if(searchValue == array[mid]){
return mid;
}
else if(searchValue > array[mid]){
low = mid + 1;
}
else{
high = mid - 1;
}
}
return -1;
}
int main(){
int array[] = {1,2,3,4,5,6,7};
int searchNum;
printf("Enter an integer:");
scanf("%d", &searchNum);
int result = binarySearch(array,7,searchNum);
if(result>=0){
printf("Found!");
}
else{
printf("Not found!");
}
getch();
}
对数组进行二分查找,数组的位置从0开始。所以如果-1为return表示该位置不在数组中或无法定位。
执行while
循环,包含return语句,如果要查找的项在数组中,则return在while
循环将 return 项目的索引。 returns 之后的 return -1
语句如果没有找到调用者,即如果 high>low
,-1 用于指示它在数组中作为 - 的索引1 在任何数组的边界之外。如果没有 return -1
语句,则会出现编译时错误,指出缺少 return 语句
当您执行检查时
if(result>=0) {
printf("Found!");
} else {
printf("Not found!");
}
如果二分查找方法找到项目并且 returns 索引(将 >-1)然后 "Found! 将打印到控制台, 否则如果二进制搜索方法 returns 的值 <0,即 -1 那么在数组中没有找到该项目,因此 Not Found! 被打印到console,你的 if 语句本身就可以给你的二进制搜索一个很好的解释!
我一直在努力学习二进制搜索的工作原理,所以我搜索了一段代码并试图理解每一行的作用。我不明白这一行。带有 "return -1" 的行。我不明白那是什么意思。有人可以解释那行代码中发生了什么吗?
#include<stdio.h>
int binarySearch(int array[], int size, int searchValue){
int low = 0;
int high = size - 1;
while(low<=high){// is the array exhausted?
int mid = (low + high) / 2; //If not, find the middle index
if(searchValue == array[mid]){
return mid;
}
else if(searchValue > array[mid]){
low = mid + 1;
}
else{
high = mid - 1;
}
}
return -1;
}
int main(){
int array[] = {1,2,3,4,5,6,7};
int searchNum;
printf("Enter an integer:");
scanf("%d", &searchNum);
int result = binarySearch(array,7,searchNum);
if(result>=0){
printf("Found!");
}
else{
printf("Not found!");
}
getch();
}
对数组进行二分查找,数组的位置从0开始。所以如果-1为return表示该位置不在数组中或无法定位。
执行while
循环,包含return语句,如果要查找的项在数组中,则return在while
循环将 return 项目的索引。 returns 之后的 return -1
语句如果没有找到调用者,即如果 high>low
,-1 用于指示它在数组中作为 - 的索引1 在任何数组的边界之外。如果没有 return -1
语句,则会出现编译时错误,指出缺少 return 语句
当您执行检查时
if(result>=0) {
printf("Found!");
} else {
printf("Not found!");
}
如果二分查找方法找到项目并且 returns 索引(将 >-1)然后 "Found! 将打印到控制台, 否则如果二进制搜索方法 returns 的值 <0,即 -1 那么在数组中没有找到该项目,因此 Not Found! 被打印到console,你的 if 语句本身就可以给你的二进制搜索一个很好的解释!