常用查找算法
来源:互联网 发布:nba手环淘宝 编辑:程序博客网 时间:2024/04/30 09:34
1,顺序查找
条件:无
原理:按顺序比较每个元素,直到找到或遍历完元素为止
时间复杂度:O(n)
private static int findSequent(int[] arr,int k){ int p = -1; for(int i=0;i<arr.length;i++){ if(k == arr[i]){ p = i; break; } } return p; }
2,二分(折半)查找
条件:有序数组
原理:取数组中间元素和目标值比较,如果相等则找到,如果小于目标值,则在右边找,如果小,则在左边找。找到或找完所有元素位置。
时间复杂度:O(logN)
private static int findHalf(int[] arr,int k){ int p = -1; int high = arr.length-1; int low = 0; while(low <= high){ int middle = (high + low)/2; if(arr[middle] == k){ p = middle; break; } if(arr[middle] > k){ high = middle-1; }else if(arr[middle] < k){ low = middle+1; } } return p; }
3,二叉树查找
条件:先创建二叉排序树:
1. 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2. 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
3. 它的左、右子树也分别为二叉排序树。
原理:
在二叉查找树b中查找x的过程为:
1. 若b是空树,则搜索失败,否则:
2. 若x等于b的根节点的数据域之值,则查找成功;否则:
3. 若x小于b的根节点的数据域之值,则搜索左子树;否则:
4. 查找右子树。
时间复杂度:
4,哈希查找
条件:先创建哈希表(散列表)
原理:根据键值方式(Key value)进行查找,通过散列函数,定位数据元素。
时间复杂度:几乎是O(1),取决于产生冲突的多少。
参考
http://www.cnblogs.com/274914765qq/p/4378620.html
http://yinger-fei.iteye.com/blog/1946460
0 0
- 常用查找算法
- [zt]常用查找算法
- 常用查找算法
- 常用算法- 二分查找
- 常用查找算法
- 常用查找算法
- C++ 常用查找算法
- 常用查找算法
- 常用查找算法总结
- 常用查找算法
- day02--常用算法--查找
- day02--常用算法--查找
- 常用查找算法
- 常用的查找算法
- 常用查找算法
- 常用查找算法 总结
- 常用查找算法总结
- 常用查找算法
- UITableView
- Redis+Keepalived高可用方案详细分析
- 获取手机所有apk,部分代码片段
- ERP系统功能之生产管理
- Maven单元测试
- 常用查找算法
- java集和类
- java访问局域网共享资源
- 百度编辑器(ueditor)不支持上传图片到独立服务器?
- C++类注册到QML脚本中
- C++ 字符串string
- RAC And MVVM (一)
- HDU 2444 — The Accomodation of Students 二分图+最大匹配
- c++格式化输入输出