折半查找,又叫二分查找,是一种适用于有序的顺序表的查找方式,折半查找的时间复杂度为O(log2 n),相较于顺序查找的时间复杂度O(n),在一般情况下,折半查找的效率要更高。
对于折半查找,需要三个输入数据,其中nums为输入的数组(默认为升序的),numsSize为该数组的长度,target是查找目标,查找结果为该数的数组下标。
int search(int* nums, int numsSize, int target){
int flag = -1;
int l = 0, r = numsSize - 1;
while (l <= r){
if (nums[(l+r)/2] > target){
r = (l + r) / 2 - 1;
}
if (nums[(l+r)/2] < target){
l = (l + r) / 2 + 1;
}
if (nums[(l+r)/2] == target){
flag = (l + r) / 2;
return flag;
}
}
return flag;
}
结果显示: