美文网首页
JavaScript检索算法/查找算法总结

JavaScript检索算法/查找算法总结

作者: 一只dororo | 来源:发表于2017-08-26 12:20 被阅读0次

一、顺序查找(线性查找)

从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,或者直到列表结尾也没找到。

它属于暴力查找技巧的一种。

例1:查找数组里有无某元素

如果在数组中找到了data,函数立刻返回true,后面不执行;如果直到数组结尾也没找到data,函数返回false。

例2:返回匹配元素位置

如果没有找到要找的数据,返回-1,由于没有元素存储在-1的位置,所以这个返回值很赞。

1.1 查找最小值和最大值

原理:

(1)将数组第一个元素赋值给一个变量,把这个变量作为最小值;

(2)开始遍历数组,从第二个元素开始依次同当前最小值进行比较。

(3) 如果当前元素数值小于当前最小值,则将当前元素设置为新的最小值。

(4)移动到下一个元素,并且重复步骤3。

(5) 当程序结束时,这个变量中存储的就是最小值。

例3:查找最小值

需要注意的关键点是由于我们假设数组的第一个元素就是当前的最小值,所以这个函数会从数组的第二个元素开始处理,即var i = 1。

例3:查找最大值

1.2 使用自组织数据

对于未排序的数据来说,当被查找的数据位于数据集的起始位置时,查找是最快、最成功的。通过将成功找到的元素置于数据集的起始位置,可以保证在以后的操作中该元素能被更快的找到。

该策略背后的理论是:通过将频繁找到的元素置于数据集的起始位置来最小化查找次数。

数据的位置并非由程序员在执行之前就组织好,而是在程序运行过程中由程序自动组织的。

使用这个方法之后,查找最频繁的元素最终会移动到数据集的起始位置,类似于对数据进行排序时用的冒泡排序。同时,也可以保证已经在数据集前面的元素不会被越移越远。

以上是对未排序数据的查找。如果先排序,则会显著加快对大数据集的查找。

二、二分查找算法

算法描述如下:

(1)将数组的第一个位置设置为边界(0)。

(2)将数组最后一个元素所在的位置设置为上边界(数组长度-1)。

(3)若下边界小于等于上边界,则做如下操作。

         a. 将终点设置为(上边界 + 下边界)/ 2。

         b. 如果查询值小于中点,将下边界设为中点下标 -1。

         c. 如果查询值大于中点,将上边界设为中点下标 +1。

         d. 否则中点元素即为要查找数据,return。

注意,当binSearch()函数找到某个值时,如果数据集中还有其他相同值,比如要找37,数据集中有3个37,则返回的一定是中间那个37。

计算查找到的目标值在数据集重复次数:

统计重复值的函数最简单的方法是写两个循环,两个都同时对数据集向下遍历,或向左遍历,统计重复次数;然后向上或向右遍历,统计重复次数。

相关文章

  • JavaScript检索算法/查找算法总结

    一、顺序查找(线性查找) 从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,或者直到列表结尾也没...

  • 数据结构+算法

    排序算法 基本排序:冒泡、选择、插入 高级排序希尔、归并、快速 检索算法 顺序查找、二分查找 高级算法 动态规划斐...

  • 基础查找算法分析

    在之前学习了一些排序算法,得出了基础排序算法的总结。之后学习了一些查找算法,今天来对于基础的一些查找算法进行总结。...

  • 查找算法总结

    二查查找树: 一颗二叉查找树是一个二叉树,其中每个节点都含有一个Comparable的键(以及相关联的值),且每个...

  • KMP算法文章合集

    字符串的查找:朴素查找算法和KMP算法 暴力匹配算法与KMP算法(串的匹配) 字符串查找算法BF和KMP 字符串匹...

  • 各种基本算法与时间空间复杂度

    排序算法 五种查找算法总结 一、顺序查找 条件:无序或有序队列。 原理:按顺序比较每个元素,直到找到关键字为止。时...

  • 算法

    一.算法基础--算法的特性 二.算法基础--算法的复杂度 三.顺序查找和二分查找 顺序查找 二分查找(前提是有序的...

  • 程序员常见算法的那些事

    面试的时候经常会被问算法的事情,今天就这个问题查找了一些算法的总结! 算法一:快速排序算法 快速排序是由东尼·霍尔...

  • java排序和查找算法

    一、排序算法 二、查找算法

  • 子字符串查找(1)

    一、定义 本文主要介绍子字符串查找的各类常用算法,如朴素匹配算法(暴力查找)、KMP算法、BM算法等。各类匹配算法...

网友评论

      本文标题:JavaScript检索算法/查找算法总结

      本文链接:https://www.haomeiwen.com/subject/siemdxtx.html