为了优化算法的时间复杂度,学习一下二分还是很有必要的,今天再次把二分看了看,总结了下面几点
1.通过二分来找一个单调递增数组里面的某个值在哪一位(为了简化问题,在这里声明数组是一个单调递增的)
#include <iostream>
using namespace std;
int main()
{
int a[] = {1,3,5,7,8,9,10,12,23,34,55,67,78,89,123,456,678,890};
int n;
while(cin>>n)
{
int l = 0;
int r = sizeof(a)/sizeof(int);
int mid = l + (r - l)/2;
while(l < r)
{
if(a[mid] < n)
{
l = mid + 1;
}
else if(a[mid] > n)
{
r = mid - 1;
}
else
{
break;
}
mid = l + (r - l)/2;
}
if(a[mid] == n)
{
cout << a[mid] << " 它在第" <<mid <<"位"<< endl;
}
else
{
cout << "未找到" << endl;
}
}
return 0;
}