数据结构之查找
来源:互联网 发布:java 绝对值运算符 编辑:程序博客网 时间:2024/06/05 06:27
一、顺序查找法:时间复杂度为O(n)
二、有序查找法:前提是数据是有序的
1、二分查找法(折半查找法):要定义头角标、中间角标、尾角标。
折半查找的时间复杂度是
如果涉及频繁的插入和删除,最好不要使用折半查找。
例:数组查询
int max,mid,minmin=0;max=arr.length-1;min=(max+min)>>1;while(arr[mid] != key){ if(key>arr[mid]) min=mid+1; else if(key<arr[mid]) max=mid-1; if(max<min) return -1; mid=(max+min)>>1;}
2、插值查找
插值查找将折半查找的角标变化的公式进行了改进
3、裴波那契查找
事先设置一个裴波那契数列F={0,1,1,2,3,5,8,13,21,34,55……}
裴波那契查找的角标换算公式是
static int FibonacciSearch(int [] a, int n, int key){ int [] F = {0,1,1,2,3,5,8,13,21,34}; int low, high, mid, i, k; low = 1; high = n; k = 0; while (n > F[k]-1) /* 计算n位于斐波那契数列的位置 */ k++; while (low <= high) { mid = low + F[k-1] -1; if (key < a[mid]){ high = mid - 1; k = k - 1; } else if (key > a[mid]){ low = mid + 1; k = k - 2; } else { if (mid <= n) return mid; else return n; } } return 0; }
虽然他们的时间复杂度都是
0 0
- 数据结构 -- 查找之 二分法查找
- 数据结构之查找
- 数据结构之查找
- 数据结构之查找
- 数据结构之折半查找
- 数据结构之“查找”-0
- 数据结构之查找算法
- 数据结构笔记之查找
- 数据结构之查找
- 数据结构之查找
- 数据结构之查找<一>
- 数据结构笔记之----查找
- 数据结构之顺序查找
- 数据结构之二分查找
- 数据结构之排序查找
- 数据结构之查找
- 数据结构之查找算法
- 数据结构之查找
- http协议基础
- 数独问题
- 进程
- 关于log4j错误日志的保存
- Oracle11g For Linux的静默安装笔记
- 数据结构之查找
- 分布式部署的一些小概念(持续补充中……)
- 集算器跨库计算能力解决报表内计算慢的问题
- MyEclipse2017新建web项目没有web.xml
- 测试redis+keepalived实现简单的主备切换
- 如何使用Spring FactoryBean?
- Oracle11g For Win7安装过程的痛苦总结
- 数字排列问题
- Mongodb的简单操作