二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。
二分法查找的思路如下:
(1)首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。
(2)如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤(1)的操作。
(3)如果某一步数组为空,则表示找不到目标元素。
二分法查找的时间复杂度O(logn)。
(以上来自网络对二分法查找介绍)
以下为全部代码
有一个可以自己决定输入数组长度的 查资料查不到想要的就自己写了。。。看着很拉跨但能用
之后我会去再查一查学习别的大佬的写法
可以删掉用别的大佬的 或者自己写
全部代码:
#include<iostream>
using namespace std;
int main()
{
int begin = 0, end = 6,mid,target; //target 目标数据
int n; //长度
int nums[10]; //最大长度
cin >> n; //确定输入数组长度
for (int i = 0; i < n; i++){
cin >> nums[i];
}
for (int i = 0; i < n; i++){
cout << nums[i] <<" ";
}
cout << endl;
cin >> target;
while (begin < end)
{
mid = (begin + end) / 2;
if (nums[mid] > target) {
end = mid;
}
else if (nums[mid] < target) {
begin = mid ;
}
else if (nums[mid] = target) {
return mid+1;
}
}
return -1;
}
运行结果: