C语言-二分查找(折半查找)算法
2016-04-03 21:42
211 查看
1.折半查找算法
原理:取中间元素与查找元素进行比较,如果查找元素比中间元素大,则在中间元素右边查找,如果查找元素比中间元素小,则在中间元素的左边查找。
代码例子:
输出结果:
loc = 7
Program ended with exit code: 0
折半插入对有序数组
代码实现:
原理:取中间元素与查找元素进行比较,如果查找元素比中间元素大,则在中间元素右边查找,如果查找元素比中间元素小,则在中间元素的左边查找。
代码例子:
#include <stdio.h> /** * 折半查找函数 * * @param arr 数组 * @param len 数组长度 * @param value 查找元素 * * @return 返回查找元素的位置 */ int searchItem(int arr[],int len, int value){ int low = 0,high = len-1,mid; while (low <= high) { mid = (low + high)/2; if (value > arr[mid]) { low = mid+1; }else if (value < arr[mid]){ high = mid - 1; }else{ return mid; } } return -1; } int main(int argc, const char * argv[]) { //数组必须是有序数组 int a[10] = {1,2,31,45,52,62,73,86,90,100}; //查找86元素 int l = searchItem(a,10,86); printf("loc = %d\n",l); return 0; }
输出结果:
loc = 7
Program ended with exit code: 0
折半插入对有序数组
代码实现:
/** * 插入数据返回地址 * * @param arr 数组 * @param len 数组长度 * @param value 要插入的数 * * @return <#return value description#> */ int insertItemLoc(int arr[],int len, int value){ int low = 0,high = len-1,mid; while (low <= high) { mid = (low + high)/2; if (value > arr[mid]) { low = mid+1; }else if (value < arr[mid]){ high = mid - 1; }else{ return mid+1; } } return low; }
相关文章推荐
- C++11并发API总结
- c++中的string常用函数用法总结
- 杨老师:Visual C++ 中操纵 MS Word 123
- 浅谈C++多态性
- C++中的static关键字
- C++STL之ACM相关知识大全
- C语言-冒泡,选择排序
- 【c++程序】inline一般用法
- [C++]String类的理解
- [C++]--对象创建的两种方式
- c语言中的const的用法
- 【好】C++中lib 和 dll 的区别、生成以及使用详解
- C++成员变量的初始化顺序问题
- C++成员变量的初始化顺序问题
- 怎样从一个DLL中导出一个C++类
- [C++]--调用系统时间
- C++命名规范
- C++命名规范
- C++作业2
- C语言完美体系