数据结构-查找-分块查找(1)算法简介
2017-12-05 20:01
519 查看
1.算法前提:
整个序列未必有序,但划分为若干块后,后面一块的最小值必大于前面一块的最大值(一般我们把它分为sqrt(n)块),我们称这样的序列叫:分块有序
2.算法构造:
下面我们将以分块有序序列(3 1 2 ) (6 4 5) (7 9 8)为例简介过程:
①分块:首先分为3(sqrt(9))块(3 1 2),(6 4 5),(7 9 8)
②建立索引表:找到每一块中的最大值3,6,9;以及最大值分别对应的下标0,3,7
③顺序查找或二分查找:例如我们要查找的值是key = 5,那我们可知3 < key < 6,可知key位于第二块
④由③再进行顺序查找(6,4,5)序列,从而得到key = 5位于第二块,下标为5
3.算法分析:
前面的过程可知:
算法必先分块有序,才能建立算法,而现实中的序列往往是无序的,所以为了提高查找的效率,请继续学习静态查找
4.即学即画:
给一个测试用例,请在纸上画出过程,并好好理解
test0:
(22 12 13 8 9 20) (33 42 44 38 24 48) (60 58 74 43 86 53)
整个序列未必有序,但划分为若干块后,后面一块的最小值必大于前面一块的最大值(一般我们把它分为sqrt(n)块),我们称这样的序列叫:分块有序
2.算法构造:
下面我们将以分块有序序列(3 1 2 ) (6 4 5) (7 9 8)为例简介过程:
①分块:首先分为3(sqrt(9))块(3 1 2),(6 4 5),(7 9 8)
②建立索引表:找到每一块中的最大值3,6,9;以及最大值分别对应的下标0,3,7
③顺序查找或二分查找:例如我们要查找的值是key = 5,那我们可知3 < key < 6,可知key位于第二块
④由③再进行顺序查找(6,4,5)序列,从而得到key = 5位于第二块,下标为5
3.算法分析:
前面的过程可知:
算法必先分块有序,才能建立算法,而现实中的序列往往是无序的,所以为了提高查找的效率,请继续学习静态查找
4.即学即画:
给一个测试用例,请在纸上画出过程,并好好理解
test0:
(22 12 13 8 9 20) (33 42 44 38 24 48) (60 58 74 43 86 53)
相关文章推荐
- 【数据结构----笔记2】查找算法之【哈希查找或散列查找】
- 算法与数据结构简介
- 查找算法数据结构总结
- 【数据结构】算法9.15 键树-双链树-查找
- 剑指offer-算法和数据结构:查找和排序
- 浅谈算法和数据结构: 八 平衡查找树之2-3树
- 【数据结构&&等差数列】KMP简介和算法的实现(c++ && java)
- 【数据结构】算法9.16 键树-Trie树-查找
- 散列表(哈希表)查找 - 数据结构和算法83
- 数据结构 c语言 顺序查找算法(linux下实现)
- 数据结构和算法------查找
- 【数据结构】算法9.17-9.18 哈希表-插入&查找
- 散列表查找的代码实现 - 数据结构和算法86
- 浅谈算法和数据结构: 九 平衡查找树之红黑树
- 头疼的算法与数据结构——二维数组中的查找
- python数据结构与算法28 二分查找
- Java数据结构 遍历 排序 查找 算法实现
- 数据结构 练习 20-查找 算法
- 相似文档查找算法之 simHash 简介及其 java 实现 - leejun_2005的个人页面 - 开源中国社区
- 数据结构和算法学习01-数据结构和算法简介