二分搜索大法
2017-03-14 23:05
190 查看
二分搜索法,很流行 时间复杂度为 T(n)=O(logn),理解就是,一个数组,一头一尾两边往中间夹。看了代码就很好理解
//这个例子是在一个数组内找到相同的数字,返回索引
int binarySearch(int *arr, int length, int key)//参数是 数组,长度,和查找值
{
int low=0;//头部
int high = length - 1;//尾部
int mid;//二分搜索最重要的中间
if (high < low)//尾巴比头还小。扯淡呢
return -1;
while (high >= low)
{
mid = low + ((high - low)>>1);
if (arr[mid] == key)//找到了
{
return mid;
}
else if (arr[mid] > key)
{
high = mid - 1;//说明不在高区,high重定义
}
else
{
low = mid + 1;//说明不再低区,low重定义
}
}
return -1;
}
int main()
{
int arr[5] = { 5,3,1,4,2 };
cout<<binarySearch(arr, 5, 1);
return 0;
}
//这个例子是在一个数组内找到相同的数字,返回索引
int binarySearch(int *arr, int length, int key)//参数是 数组,长度,和查找值
{
int low=0;//头部
int high = length - 1;//尾部
int mid;//二分搜索最重要的中间
if (high < low)//尾巴比头还小。扯淡呢
return -1;
while (high >= low)
{
mid = low + ((high - low)>>1);
if (arr[mid] == key)//找到了
{
return mid;
}
else if (arr[mid] > key)
{
high = mid - 1;//说明不在高区,high重定义
}
else
{
low = mid + 1;//说明不再低区,low重定义
}
}
return -1;
}
int main()
{
int arr[5] = { 5,3,1,4,2 };
cout<<binarySearch(arr, 5, 1);
return 0;
}
相关文章推荐
- Pku oj 3258 River Hopscotch(二分搜索)
- hdu 2337 Escape from Enemy Territory (预处理+二分+搜索)
- Best Cow Fences 二分搜索加dp求大于一指定长度的最大值
- POJ_1019_Number Sequence_二分搜索
- poj3258 River Hopscotch (二分搜索,考虑最大值最小问题)
- POJ 3273 Monthly Expense(二分搜索巧妙利用)
- python-实现二分搜索
- CF 551c 二分搜索+思维题
- 二分搜索的拓展用法
- POJ 3104 Drying (二分搜索)
- POJ 3484 Showstopper (二分搜索)
- 覆盖距离AsiaHatyai-2012 & LA 6144 - Radiation 二分搜索
- 二分搜索以及其扩展形式
- HDU 5652 India and China Origins 二分+搜索
- HDU 2899(搜索题,二分)
- HDU 2446(搜索题,二分)
- 算法笔记——【分治法】分治法与二分搜索
- POJ 3273 Monthly Expense(二分搜索,最大化最小值)
- 编程珠矶 习题 4.6 利用二分搜索找到一个数在顺序数组里面的下限和上限
- FZU 2203 单纵大法好 (二分+贪心)