静态表查找
来源:互联网 发布:java创建一个表格 编辑:程序博客网 时间:2024/06/15 22:37
静态查找表是指表结构不是在查询过程中动态生成的,它可分为 顺序查找(无序)、二分查找(有序)、分块查找(索引顺序查找)。
1.顺序查找
时间复杂度(O(n))
public static int seqSearch(int[] array, int key){for(int i = 0; i < array.length; i++){if(array[i] == key)return i;}return -1;}
2.二分查找
时间复杂度(O(log2n))
//非递归实现public static int binSearch(int[] array, int key){int low = 0;int high = array.length - 1;int mid = 0;while(low <= high){mid = (low + high)/2;if(key == array[mid])return mid;else if(key > array[mid])low = mid + 1;elsehigh = mid - 1;}return -1;}//递归实现public static int binarySearch(int key, int[] array, int low, int high){if(low > high)return -1;if(low <= high){int mid = (low >>> 1) + (high >>> 1);if(key == array[mid])return mid;else if(key > array[mid])low = mid + 1;elsehigh = mid - 1;}return binarySearch(key, array, low, high);}
3.分块查找
时间复杂度介于顺序查找和二分查找之间
分块查找又称索引顺序查找,它是顺序查找的一种改进方法,性能优于顺序查找。
方法描述:
将n个数据元素“按块有序”划分为m块(一般块的长度均匀,最后一块可以不满)(m<=n),每一块中的节点不必有序,但块与块之间必须“按块有序”;即第一块中的关键字必须小于(或者大于)第二块中的关键字,第二块中的关键字必须小于(或者大于)第三块中的关键字,构造索引表,索引表按关键字有序排列。
如下图所示:
图示为一个索引顺序表,其中包括三个块,第一个块的其实地址为0,快内最大关键字为25;第二个块的其实地址为5,块内最大关键字为58;第三个块的起始地址为10,块内最大关键字为88。
分块查找基本步骤:
Step1、先选取各块中最大关键字构成一个索引表;
Step2、查找分两个部分:先对索引表进行二分查找或顺序查找,以确定待查记录在哪一块中;然后,在已确定的块中用顺序法进行查找。
0 0
- 查找:静态查找表
- 数据结构 查找 静态查找表
- 查找之静态查找表
- 查找(静态查找表)
- 静态查找静态树表
- 静态查找表
- 静态查找表
- 静态表查找
- 静态表查找练习
- 静态查找表
- 静态表查找
- 数据结构:静态查找表
- 静态查找表
- 静态查找表:顺序查找、折半查找、分块查找
- 静态查找表:顺序查找、折半查找、分块查找
- 动态查找表与静态查找表
- 静态查找表与动态查找表
- 静态查找表与动态查找表
- subid和slotid
- iFun Factory的 游戏服务器
- select函数详解及实例分析
- nefuoj 1215 线段树区间更新区间求和
- TDD实践工具
- 静态表查找
- vi编辑器
- android Popupwindow软键盘与窗体重叠的解决方法
- JS String(字符串)对象 Boolean对象
- Freeline 0.8.6在Android studio中的集成
- gradle+springBoot入门示例
- java web项目获取路径问题
- 代码的设计逻辑
- 问题 D: 上帝视角