问题:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,
写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
解法一:
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
/*
解法一:
target在左闭右闭的区间中
*/
int target = 33; //目标值
int a[10] = {1,3,5,7,10,33,44,55,66,99}; //有序数组
int left = 0; //数组下标最小值
int right = 9; //数组下标最大值
while(left <= right)
{
int mid = (left + right) / 2;
if(a[mid] > target)
{
right = mid - 1;
}
else if (a[mid] < target)
{
left = mid + 1;
}
else
{
printf("目标值在数组中的下标:%d\n",mid);
system("pause");
return 0;
}
}
printf("未找到\n");
system("pause");
return -1;
}
解法二:
int main()
{
/*
解法二:
target在左闭右开的区间中
*/
int target = 99; //目标值
int a[10] = {1,3,5,7,10,33,44,55,66,99}; //有序数组
int left = 0; //数组下标最小值
int right = 10; //数组长度
while(left < right)
{
int mid = (left + right) / 2;
if(a[mid] > target)
{
right = mid ;
}
else if (a[mid] < target)
{
left = mid + 1;
}
else
{
printf("目标值在数组中的下标:%d\n",mid);
system("pause");
return 0;
}
}
printf("未找到\n");
system("pause");
return -1;
}
声明:此文章为学习笔记,如有侵权请联系删除。