搜索
首页系统教程LINUX算法——跳跃搜索

算法——跳跃搜索

Feb 16, 2024 am 10:42 AM
linuxlinux教程红帽linux系统linux命令linux认证红帽linuxlinux视频

算法——跳跃搜索

例如,假设我们有一个大小为n的数组arr []和块(要跳转)的大小m。然后我们搜索索引arr [0],arr [m],arr [2m] ... ..arr [km]等等。一旦我们找到间隔(arr [km]

我们考虑以下数组:(0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610)。数组的长度为16.跳跃搜索将以下列步骤找到55,假设要跳过的块大小为4.

步骤1:从索引0跳转到索引4;
步骤2:从索引4跳转到索引8;
步骤3:从索引8跳转到索引16;
步骤4:由于索引16处的元素大于55,因此我们将返回一步到索引9.
步骤5:从索引9执行线性搜索以获取元素55。
要跳过的最佳块大小是多少?
在最坏的情况下,我们必须进行n / m跳转,如果最后一个检查值大于要搜索的元素,则对线性搜索进行m-1比较。因此,最坏情况下的比较总数将为((n / m)+ m-1)。当m =√n时,函数((n / m)+ m-1)的值将是最小值。因此,最好的步长是m = √n。

// C++ program to implement Jump Search

#include <bits>
using namespace std;

int jumpSearch(int arr[], int x, int n)
{
// Finding block size to be jumped
int step = sqrt(n);

// Finding the block where element is
// present (if it is present)
int prev = 0;
while (arr[min(step, n)-1] = n)
return -1;
}

// Doing a linear search for x in block
// beginning with prev.
while (arr[prev] 
<p>输出:</p>
<p>Number 55 is at index 10</p>
<p>时间复杂度:O(√n)<br>
辅助空间:O(1)</p>
<p><strong>注意:</strong></p>
<p>该查找只针对已经排序的数组。<br>
要跳过的块的最佳大小是O(√n)。这使得跳跃搜索O(√n)的时间复杂度。<br>
跳跃搜索的时间复杂度在线性搜索((O(n))和二进制搜索(O(Log n))之间。<br>
二进制搜索比跳跃搜索更好,但跳转搜索具有我们仅遍历一次的优点(二进制搜索可能需要最多为0(Log n)跳转),考虑要搜索的元素是最小元素或小于最小的)。因此,在跳回成本高昂的系统中,我们使用Jump Search。</p></bits>

以上是算法——跳跃搜索的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:Linux就该这么学。如有侵权,请联系admin@php.cn删除
如何管理FireWalld和UFW以进行Linux安全如何管理FireWalld和UFW以进行Linux安全May 12, 2025 am 10:56 AM

Linux系统依靠防火墙来保护未经授权的网络访问。 这些软件障碍控制网络流量,允许基于预定义的规则来阻止数据包。 他们主要在网络层操作,他们管理

如何检查Linux系统是台式机还是笔记本电脑如何检查Linux系统是台式机还是笔记本电脑May 12, 2025 am 10:48 AM

确定Linux系统是台式机还是笔记本电脑对于系统优化至关重要。本指南概述了简单的命令以识别您的系统类型。 hostnamectl命令:此命令提供了一种检查系统机箱的简洁方法

如何增加Linux中的TCP/IP连接如何增加Linux中的TCP/IP连接May 12, 2025 am 10:23 AM

Linux服务器TCP/IP连接数限制调整指南 Linux系统常用于服务器和网络应用,管理员经常会遇到TCP/IP连接数达到上限的问题,导致用户连接错误。本文将指导您如何提升Linux系统中的最大TCP/IP连接数。 TCP/IP连接数理解 TCP/IP (传输控制协议/互联网协议)是互联网的基本通信协议。每个TCP连接都需要系统资源。当活动连接过多时,系统可能会拒绝新的连接或速度变慢。 通过增加允许的最大连接数,可以提高服务器性能并处理更多并发用户。 检查当前Linux连接数限制 在更改设置之

如何将SVG转换为Linux终端中的PNG如何将SVG转换为Linux终端中的PNGMay 12, 2025 am 10:21 AM

SVG(可扩展的矢量图形)文件是徽标和插图的理想选择,因为它们的可重复性而没有质量损失。 但是,PNG(便携式网络图形)格式通常可以更好地与网站和应用程序兼容。本指南d

如何使用LiveCode创建自己的Android和iOS应用程序如何使用LiveCode创建自己的Android和iOS应用程序May 12, 2025 am 10:10 AM

Livecode:跨平台发展革命 LiveCode是一种编程语言,于1993年首次亮相,简化了每个人的应用程序开发。 它的高级,类似英语的语法和动态键入使得可以轻松地创建强大的应用程序

如何从Linux终端重置USB设备如何从Linux终端重置USB设备May 12, 2025 am 10:07 AM

本指南提供了一个分步过程,用于通过Linux命令行重置故障USB设备。 使用这些命令简化了对无响应或断开USB驱动器的故障排除。 步骤1:识别您的USB设备 首先,我

如何在Linux上设置临时静态IP地址如何在Linux上设置临时静态IP地址May 12, 2025 am 10:06 AM

在Linux上暂时设置静态IP地址对于网络故障排除或特定的会话配置是无价的。 本指南详细介绍了如何使用命令行工具来实现此目的,并指出更改并非跨重启

51个鲜为人知的Linux命令用于电源用户51个鲜为人知的Linux命令用于电源用户May 12, 2025 am 09:51 AM

Linux以其强大的命令行工具集而闻名,这些工具允许用户高效地与系统交互。虽然许多Linux用户熟悉诸如ls、cd或grep之类的常用命令,但还有一些鲜为人知但极其有用的命令和快捷方式可以简化并提高生产力。 我们很高兴分享我们关于“鲜为人知的Linux命令”的最新五篇文章,其中包含50多个你可能不知道的命令。 您可能也喜欢: 11个鲜为人知的实用Linux命令——第一部分 10个鲜为人知的Linux命令——第二部分 10个鲜为人知的Linux命令——第三部分 10个鲜为人知的有效Linux命令

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器