全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

线性、二进制和散列搜索

发布时间:2022-10-08 16:30:23
发布人:syq

  在脚本中搜索算法

  通常,当我们需要从任何数据存储中查找数据时,有三种类型的搜索算法。它们是线性搜索、二进制搜索和哈希搜索。搜索意味着从数据集中查找数据记录,该数据集可以是任何地图或项目列表。每种搜索算法在使用它甚至将其应用于程序之前都有某些要求:

线性、二进制和散列搜索

  线性搜索 — 线性搜索需要应用于未排序的 Array,并且根据将每个元素与要搜索的目标进行比较来查找

  二进制搜索 — 如果数组从相同的键或相同的方向排序,则二进制搜索是从数组中搜索元素的优化方法

  如果我们想在 Hashmap 上进行搜索,我们将使用哈希算法来存储哈希的键并直接将其与值映射,而不是在 Array 中搜索。此算法的时间复杂度为 O(1),因为程序已经知道具有相同键的值的哈希或索引

  线性搜索

  在 JavaScript 中,我们在数组原型中有一个方法,该方法使用线性搜索来查找元素。让我们创建 find 的定义,以了解线性算法的工作原理find

21

  下面是线性搜索的示例,其中我们首先在 Array 上创建了原型方法,并在运行提供的回调方法时迭代到所有元素,如果回调成功,则返回完整的对象

  此算法的最坏情况是,目标元素将位于最后一个索引上,使其在 N 次时运行。因此,时间复杂度为 O(N),其中 N 是数组中的项数

  二进制搜索

  接下来是二进制搜索,但请记住,二进制搜索仅适用于排序的数组,因此首先,我们需要确保数组已排序

  对象数组的注释:

  在 JavaScript 中处理对象数组时,应使用要搜索的键对数组进行排序。例如,如果要在数组的对象中将名称作为属性之一进行搜索,则数组应仅根据名称字段进行格式化,而不是使用对象数组中的任何其他字段进行格式化

  算法

  在二进制搜索中,由于数组是按某种顺序排序的,我们可以使用这意味着我们知道应该去哪个路径来搜索目标元素。让我们举个例子来了解更多

22

  如您所见,数组按 ASC 顺序对奇数进行排序。因此,为了慷慨,我们首先取一个中间元素(你可以取任何数字,但为了获得最准确的结果,你应该总是选择中间元素)

  下一步是将目标元素与中间元素进行比较

23

  我们也可以使用 end + start / 2,但如果数组大小很大,这将引发内存错误,因此最好使用上述方法来计算中间索引

  如果我们找到元素,我们将返回中间元素,否则我们将检查

24

  现在,您将基于上述条件获得一个新数组,然后我们需要重新执行相同的逻辑,直到数组大小变为一,并且我们找到元素

25

  程序

  讨论够了,让我们写一些代码,看看我们如何使它工作

  我们将使用此集合来创建程序并观察数组是否按分数参数排序,我也想使用相同的参数进行搜索

26

27

  在这里,我们维护数组的开始和结束,我们正在操作开始和结束以创建替代数组,同时检查目标是否匹配。

  就是这样。您的二进制搜索已准备好满足您的目的。

  二进制搜索的时间复杂度为 O(log n)。让我简要介绍如何计算其时间复杂度

  计算时间复杂度

  在计算之前,让我们看看需要对变量运行特定语句的次数

  首先,执行的语句数在 2^n 部分中减少

28

  现在,让我们为二进制搜索设计公式,因为它们中的每一个都是2的乘数,我们可以很容易地说

29

  让我们在两边采取对账单

30

  我们有一个对数公式

31

  所以新的等式将是

32

  这就是您计算二进制搜索的时间复杂度的方式。计算时间复杂度本身就是一个需要讨论的庞大话题,但我们只用了其中的一小部分来展示它是如何完成的。

  散列法

  哈希算法非常干净,仅特定于哈希映射。由于哈希图以知道条目键的模式存储数据,因此从中搜索是一个单一的调用。一个简单的例子是

33

  哈希的时间复杂度为 O(1),因为响应操作不受哈希保存的项目数的影响

相关文章

flutter和uni-app在应用层面有什么区别?

flutter和uni-app在应用层面有什么区别?

2023-10-14
Flutter和 qt的区别都有什么?

Flutter和 qt的区别都有什么?

2023-10-14
rnn和lstm中batchsize和timestep的区别是什么?

rnn和lstm中batchsize和timestep的区别是什么?

2023-10-14
什么是OA服务器?

什么是OA服务器?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取