查找 - 二分查找
来源:互联网 发布:windows刻录光盘 编辑:程序博客网 时间:2024/06/07 03:25
二分查找是利用分治思想减小问题规模的一种查找算法,二分查找的序列必须是有序的。
c/c++实现的算法如下:
/*递归算法, bsearch_recursion.c*/int bsearch_recursion(int array[], int low, int high, int key){ int mid_index, mid_value; mid_index = low + (high - low) / 2; mid_value = array[mid_index]; if (low < high && key != mid_value) { if (key > mid_value) return bsearch_recursion(array, mid_index + 1, high, key); if (key < mid_value) return bsearch_recursion(array, low, mid_index - 1, key); } else if (key == mid_value) return mid_index; else return -1;}/*循环算法, bsearch_loop.c*/int bsearch_loop(int *array, int low, int high, int key){ int mid_index = low + (high - low) / 2; int mid_value = *(array + mid_index); while (low < high && key != mid_value) { if (key > mid_value) low = mid_index + 1; if (key < mid_value) high = mid_index - 1; mid_index = low + (high - low) / 2; mid_value = *(array + mid_index); } return (*(array + mid_index) == key ? mid_index : -1);}//bsearch.cppbool bsearch(std::vector<int>ivec, int target) { auto begin = ivec.begin(), end = ivec.end(), mid = begin + (end - begin) / 2; while (begin != end && *mid != target) { if (*mid > target) end = mid - 1; else begin = mid + 1; mid = begin + (end - begin) / 2; } return *mid == target; }
0 0
- 【查找】折半查找/二分查找
- 查找-折半查找(二分查找)
- 查找方法----二分查找
- 折半查找 (二分查找)
- 查找----二分查找法
- 查找树-------二分查找
- 二分查找 (折半查找)
- 查找之二分查找
- 顺序查找,二分查找
- 二分查找、折半查找
- 查找之二分查找
- 二分查找、二叉排序树查找
- 查找之二分查找
- 折半查找(二分查找)
- 二分查找(折半查找)
- 二分查找 三分查找
- 二分查找,三分查找
- 查找算法 二分查找
- 聚类算法实践
- 文章标题
- eclipse调试java程序的高级技巧
- Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/suppor
- IO流(Input Output) 18~19天..
- 查找 - 二分查找
- ios-day18-08(使用CABasicAnimation实现对UIView的平移、旋转、缩放)
- 两个byte[]数组合并
- Unique Paths - LeetCode
- MySQL数据库备份和还原的常用命令收集
- 关于Android的JNI开发SO库调java接口函数注意事项
- Ubuntu下编译webkit
- python输出不换行(同一行输出不同类型数据)
- sql 主要事项