第1关:顺序表的查找
任务描述
本关任务:对从大到小排列的数组进行折半查找。
测试说明
平台会对你编写的代码进行测试:
测试输入:
6
5
12 6 3 2 1
预期输出:
1
说明:第一行是目标元素target,第二行是数组长度len,第三行是数组中的元素。
代码如下
#include<stdio.h>
// 降序
int binarySearch(int array[], int len, int target) {
/********* Begin *********/
int low=0,high=len-1;
while(low<=high){
int mid=(low+high)/2;
if(target==array[mid])
return mid;
else if(target<array[mid])
low=mid+1;
else
high=mid-1;
}
return -1;
/********* End *********/
}
int main(){
int target, len;
scanf("%d", &target); //输入整数并赋值给变量a
scanf("%d", &len); //输入整数并赋值给变量b
int a[10];
int i = 0;
for (;i < len;i++) {
scanf("%d", &a[i]);
}
printf("%d\n", binarySearch(a, len, target));
return 0;
}