C#,数据检索算法之跳跃搜索(Jump Search)的源代码

数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。
数据检索算法是所有算法的基础算法之一。
本文提供跳跃搜索的源代码。
1 文本格式
using System;
namespace Legalsoft.Truffer.Algorithm
{
public static class ArraySearch_Algorithm
{
/// <summary>
/// 跳跃搜索
/// </summary>
/// <param name="arr"></param>
/// <param name="x"></param>
/// <returns></returns>
public static int Jump_Search(int[] arr, int x)
{
int n = arr.Length;
int step = (int)Math.Sqrt(n);
int prev = 0;
while (arr[Math.Min(step, n) - 1] < x)
{
prev = step;
step += (int)Math.Sqrt(n);
if (prev >= n)
{
return -1;
}
}
while (arr[prev] < x)
{
prev++;
if (prev == Math.Min(step, n))
{
return -1;
}
}
if (arr[prev] == x)
{
return prev;
}
return -1;
}
}
}
代码不重要,思路最重要。
2 代码格式
using System;namespace Legalsoft.Truffer.Algorithm
{public static class ArraySearch_Algorithm{/// <summary>/// 跳跃搜索/// </summary>/// <param name="arr"></param>/// <param name="x"></param>/// <returns></returns>public static int Jump_Search(int[] arr, int x){int n = arr.Length;int step = (int)Math.Sqrt(n);int prev = 0;while (arr[Math.Min(step, n) - 1] < x){prev = step;step += (int)Math.Sqrt(n);if (prev >= n){return -1;}}while (arr[prev] < x){prev++;if (prev == Math.Min(step, n)){return -1;}}if (arr[prev] == x){return prev;}return -1;}}
}
相关文章:
C#,数据检索算法之跳跃搜索(Jump Search)的源代码
数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文提供跳跃搜索的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algorithm { public static class ArraySe…...
ElasticSearch 开发总结(九)——SearchType:DFS_QUERY_THEN_FETCH和QUERY_THEN_FETCH
ElasticSearch 开发总结(九)——SearchType:DFS_QUERY_THEN_FETCH和QUERY_THEN_FETCH-CSDN博客 1.SearchType ES的搜索类型 有一个类SearchType(如下图示),关于该类的描述: Search type repre…...
那些年与指针的爱恨情仇(一)---- 指针本质及其相关性质用法
关注小庄 顿顿解馋 (≧∇≦) 引言: 小伙伴们在学习c语言过程中是否因为指针而困扰,指针简直就像是小说女主,它逃咱追,我们插翅难飞…本篇文章让博主为你打理打理指针这个傲娇鬼吧~ 本节我们将认识到指针本质,何为指针和…...
计算机网络——TCP协议
💡TCP的可靠不在于它是否可以把数据100%传输过去,而是 1.发送方发去数据后,可以知道接收方是否收到数据;2.如果接收方没收到,可以有补救手段; 图1.TCP组成图 TCP的可靠性是付出代价的,即传输效率…...
软考高级有意义吗?
有同学在平台向我提问,软考高级好像不好通过,花那么多时间去准备(非科班),有意义么? 我知道有些同学还在犹豫,不确定是否要报名软考系统架构设计师或者系统分析师。我认为,这种犹豫…...
二分算法模版
二分算法模版 实数二分算法模版实数二分模版题 整数二分算法模版向上取整二分模版向下取整二分模版二分模版的注意点二分模版中check函数的实现能够使用二分的条件 二分主要分两类, 一类是对实数进行二分,一类是对整数进行二分 对整数二分又分成2种&…...
【CSS】字体效果展示
测试时使用了Google浏览器。 1.Courier New 2.monospace 3.Franklin Gothic Medium 4.Arial Narrow 5.Arial 6.sans-serif 7.Gill Sans MT 8.Calibri 9.Trebuchet MS 10.Lucida Sans 11.Lucida Grande 12.Lucida Sans Unicode 13.Geneva 14.Verdana 15.Segoe UI 16.Tahoma 17.…...
asp.net宠物流浪救助系统
asp.net宠物流浪救助系统 当领养人是无或者未领养的时候,就会显示领养申请按钮,登陆的用户可以申请领域该宠物,未登录会提示登陆然后转到登陆页面 宠物领养页面支持关键字查询符合条件的宠物 当有领养人时就隐藏领养申请按钮 社区交流意见…...
git常见命令
1、常用命令记录 1)切换分支 git checkout 分支名2)查看分支 查看远程分支 git branch -r 查看所有分支包括本地分支和远程分支 git branch -a3)合并分支 git merge 来源分支4)删除分支 删除本地分支:git branch …...
主成分分析(PCA)Python
实际问题研究中,常常遇到多变量问题,变量越多,问题往往越复杂,且各个变量之间往往有联系。于是,我们想到能不能用较少的新变量代替原本较多的旧变量,且使这些较少的新变量尽可能多地保留原来变量所反映的信…...
Leetcode—144. 二叉树的前序遍历【简单】
2023每日刷题(九十六) Leetcode—144. 二叉树的前序遍历 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr…...
混淆矩阵、准确率、查准率、查全率、DSC、IoU、敏感度的计算
1.背景介绍 在训练的模型的时候,需要评价模型的好坏,就涉及到混淆矩阵、准确率、查准率、查全率、DSC、IoU、敏感度的计算。 2、混淆矩阵的概念 所谓的混淆矩阵如下表所示: TP:真正类,真的正例被预测为正例 FN:假负类…...
ChatGPT目前的AI一哥
ChatGPT和文心一言是两个不同的AI助手,各自有其独特的特点和应用场景。以下是对它们在智能回复、语言准确性和知识库丰富度等方面的简要比较: 智能回复:ChatGPT是由OpenAI开发的语言模型,具有强大的自然语言处理和生成能力&#x…...
认识思维之熵
经常有读者问我,说: 为什么向您请教一个问题,您总能很快指出在哪篇文章里面提到过,是因为您的记忆力特别好吗? 其实不是的。更重要的原因是:如果你经过系统训练,有意识地去获取知识的话&#x…...
蓝桥杯备战——1.点亮LED灯
1.解析原理图 由上图可以看到8个共阳LED灯接到了573输出口,而573输入接到单片机P0口上。当573 LE脚输入高电平时,输出随输入变化,当LE为低电平时,输出锁存。 由上图可以看到Y4C接到了或非门74HC02的输出端,而输入端为…...
【网络协议测试】畸形数据包——圣诞树攻击(DOS攻击)
简介 TCP所有标志位被设置为1的数据包被称为圣诞树数据包(XMas Tree packet),之所以叫这个名是因为这些标志位就像圣诞树上灯一样全部被点亮。 标志位介绍 TCP报文格式: 控制标志(Control Bits)共6个bi…...
Java基础面试题-5day
泛型 什么是泛型?有什么用? 泛型是jdk5引入的新特性,通过泛型可以提高代码的可读性和稳定性;当我们使用泛型时,传入的对象类型必须是指定的泛型类型,否则就会报错 泛型的使用方式有哪些? 一…...
软通智慧启动鲲鹏原生应用开发合作
1月25日,软通智慧科技有限公司启动鲲鹏原生应用开发合作,将基于鲲鹏硬件底座、openEuler、开发套件Kunpeng DevKit和应用使能套件Kunpeng BoostKit开展面向智慧园区、政务、水利水务等行业场景的软硬件原生应用开发,并持续发布性能更优的鲲鹏…...
【STM32】STM32F4中USB的CDC虚拟串口(VCP)使用方法
文章目录 一、前言二、STM32CubeMX生成代码2.1 选择芯片2.2 配置相关模式2.3 设置时钟频率2.4 生成代码2.5 编译并下载代码2.6 结果2.7 问题 三、回环测试3.1 打开工程3.2 添加回环代码3.3 编译烧录并测试 四、出现问题和解决方法4.1 烧录总是要自己插拔USB4.2 自己生成的工程没…...
网络协议与攻击模拟_06攻击模拟SYN Flood
一、SYN Flood原理 在TCP三次握手过程中, 客户端发送一个SYN包给服务器服务端接收到SYN包后,会回复SYNACK包给客户端,然后等待客户端回复ACK包。但此时客户端并不会回复ACK包,所以服务端就只能一直等待直到超时。服务端超时后会…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
起重机起升机构的安全装置有哪些?
起重机起升机构的安全装置是保障吊装作业安全的关键部件,主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理: 一、超载保护装置(核心安全装置) 1. 起重量限制器 功能:实时监测起升载荷&a…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...
MAZANOKE结合内网穿透技术实现跨地域图像优化服务的远程访问过程
文章目录 前言1. 关于MAZANOKE2. Docker部署3. 简单使用MAZANOKE4. 安装cpolar内网穿透5. 配置公网地址6. 配置固定公网地址总结 前言 在数字世界高速发展的今天,您是否察觉到那些静默增长的视觉数据正在悄然蚕食存储空间?随着影像记录成为日常习惯&…...
