符号表以及在有序数组中的二分查找
2017-07-14 14:18
267 查看
1.符号表:
符号表的主要的目的就是将一个键和一个值联系起来。用例能够将一个键值对插入符号表并希望在之后能够从符号表的所有键值对中按照键直接找到对应的键值。2.基于有序数组的二分查找(迭代)
二分查找法能够大大减少每次查找所需要的比较次数。在查找时,我们先将被查找的数和子数组中的中间键比较,如果被查找的键值比中间键小,则我们就在左子数组中查找。反之就在右子数组中查找。部分代码如下:
public int rank(Key key){ int lo = 0,hi = N-1; //lo的初始值为0,且永远不会变小。 while(lo <= hi){ int mid = lo + (hi - lo)/2; int cmp = key.compareTo(Keys[mid]); if(cmp < 0) hi = mid - 1; else if(cmp > 0) lo = mid+1; else return mid; } return lo; //这里的lo就是查找到的相同值的键,也就是这个数存在在有序数组中的位置 }
相关文章推荐
- 循环有序数组/旋转数组的二分查找
- 判断一个数组是否已经排好序以及二分查找
- 二分查找有序数组
- 查找:链表顺序查找和有序数组二分查找
- 循环有序数组中的二分查找 Search in a rotated sorted array
- 153.leetcode Find Minimum in Rotated Sorted Array(medium)[有序数组 二分查找]
- 【二分查找】用C语言实现一个有序数组的二分查找
- 算法-分割有序数组后查值-二分查找的变形
- 二分查找 基于有序数组 返回下标
- 插入元素到有序数组,二分搜索查找插入位置
- hiho1128 非有序数组的二分查找 (快速排序)
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 二分查找:在有序数组中搜索大于等于x的数的最小下标
- 在一个旋转过的有序数组上实现二分查找 收藏
- 算法—8.有序数组中的二分查找
- (二分查找思想)从有序递增旋转数组45679123 中找到数字6的位置
- 二分查找变体之循环有序数组找分界点
- 个人练习数据结构之--------------关于线性数据的有序数组以及之上的二分法查找、不同排序方法的学习
- 在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级
- 从有序数组中查找key第一次出现的位置以及出现的所有位置