指数搜索同样需要数组是已经排序。指数搜索包括以下两个步骤:
1、查找元素存在的范围
2、在第1步找到的范围内进行二分搜索。
如何找到元素可能存在的范围?
先找到合适的i,依次使用i=1,i=2,i=4,i=8,i=16,i=32,i=64,i=128......,直到使得有 array[i / 2] < x < array[i],x为要搜索的数。
然后,从i / 2 到 i 之间进行二分查找。
与二分一样,Jump Search 是一种用于排序数组的搜索算法。基本思想是通过固定步骤向前跳转或跳过某些元素代替搜索所有元素来检查比线性搜索更少的元素。
用于二维有序数组。从上到下递增,从左到右递增。从左下角第一个元素(当前列值最大,当前行值最小)对比。如果目标值大于当前值,那么这一列的值都可以排除;如果目标值小于当前值,那么这一行的值都可以排除。排除像马鞍式一样。
时间的复杂度就是O(row + col),就是行数+列数。
参考代码
以上就是本篇文章【数据结构和算法 十六、指数查找/跳转搜索/鞍背搜索】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/329.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多