查找优化
来源:互联网 发布:阿里云的cdn怎么样 编辑:程序博客网 时间:2024/04/30 08:50
一、顺序查找
在某个数组中查找某个key时的一般方法:
...
for(i=0;i<=n;i++){
if(key == a[i])
return ;
}
...
复杂度为O(n)
需要判断i<=n和key == a[i]两个语句。
顺序查找改进:
如在数组头放入key值,
...
a[0] = key;
while(a[i] != key){
i -- ;
}
...
复杂度为O(n)
只需要判断key != a[i]一个语句。
这种在查找方向的尽头放置“哨兵”,可以使得效率的提升。
二、折半查找(二分查找)
一般方法:
...
while(low < high){
mid = (low + high)/2;
if ...
}
...
优化:
插值查找:
将mid = (low + high)/2 = low + 1/2(high - low) 改进为 ===>>> mid = low + (key - a[low])/(a[high - a[low]])*(high - low)
这样在关键字分布较为均匀,表较大的情况下有明显的改善。
斐波那契(Fibonacci)查找:略。
思想都是改进mid的切分方法。
0 0
- 查找优化
- 优化map查找操作
- 折半查找与优化
- UVA10474查找优化
- C#字符串查找的优化
- 路由查找算法优化心得
- 数字和字符查找优化
- SQLSERVER优化(查找会话SQL)
- 有序表查找优化算法
- 顺序查找的优化方法
- 性能优化之字符查找
- 折半查找的优化版本
- 冒泡优化排序+折半查找
- mysql查找附近优化思路
- 顺序查找及简单优化
- 关于二分法查找的优化
- findbugs 查找bug优化代码
- 二分查找和斐波那契查找优化
- java的selector用法
- 求二叉树的任意两个节点的最近公共祖先
- 【LeetCode】-Remove Duplicates from Sorted List
- HahaMil数据库(数据库操作组件)
- Longest Common Prefix
- 查找优化
- Android中文API(122) —— AudioRecord
- hdu 4569 TSP
- linux进程间通信-信号通信
- AudioRecord
- Oracel 常用函数
- 极客Web前端开发资源集锦
- Roman to Integer
- Codility-FigFrog