重拾数据结构(二)

数据结构与算法——散列表类的C++实现(探测散列表) 散列表类的C++实现(探测散列表)... 阅读详情

1.字符串:子串就是字符串中任意个连续的字符组成的子序列。例:有字符串String str = “abbbcdfee”,那么“a”,“ab”,"abb","bbb","cdf"等都是字符串str的子床,重点是连续“ac”由字符“a”与“c”组成,但是“ac”不是str的子串,另:“”也是str的子串,即str的有一个空子串,且空子串所有字符串的一个子串。

2,二分查找:

递归二分查找:

public int recursiveBinarySearch(int[] a, int target) {
    int hi = a.length - 1;
    int mid = hi/2;
    int middleValue = a[mid];
    int[] tmp;
    if (target > middleValue) {
        tmp = Arrays.copyOfRange(a, mid + 1, hi);
    } else if (target < middleValue) {
        tmp = Arrays.copyOfRange(a, 0, mid - 1);
    } else {
        /**
         * 此处有问题middleValue转为整型对象Integer,虽然还是100,但是内存地址与Arrays.asList(a)中的100对象地址不一样,返回值会为-1
         */
        return Arrays.asList(a).indexOf(middleValue);
    }
    return recursiveBinarySearch(tmp, target);
}
此代码效率低下,同时会生成大量的中间数组,带改进。

常规二分查找:

public int binarySearch(int[] a, int target) {
    int lo = 0;
    int hi = a.length - 1;
    while (lo <= hi) {
        int mid = lo + ( hi - lo) /2;
        if (target < a[mid]) {
            hi = mid - 1;
        } else if (target > a[mid]) {
            lo = mid + 1;
        } else {
            return mid;
        }
    }
    return -1;
}
这个方法是二分查找的正确姿势

追加正确姿势的递归二分查找:
public int recursiveBinarySearch(int[] a, int target, int start, int end) {
    int mid = start + (end - start) / 2;
    if (target > a[mid]) {
        return recursiveBinarySearch(a, target, mid + 1, end);
    } else if (target < a[mid]) {
        return recursiveBinarySearch(a, target, start, mid - 1);
    } else {
        return mid;
    }
}


数据结构与算法——散列表类的C++实现(分离链接散列表) 散列表类的C++实现(分离链接散列表) 阅读详情

相关推荐

手把手解决AutoDock安装那些坑:从autogrid报错到.map文件生成(Win10/11环境)

本文详细解析了在Win10/11环境下安装AutoDock时遇到的常见问题,特别是autogrid报错和.map文件生成失败的情况。通过实战验证的解决方案,包括环境变量设置、Python版本管理、文件权限调整等,帮助用户顺利完成安装并提升分子对接研究效率。

weixin_42548888的博客 198

《数据结构之链表篇》--简单通讯录的C++实现

客户端程序: #include"List.h" int menu() { cout << "1.新建联系人" << endl; cout << "2.删除联系人" << endl; cout << "3.浏览通讯录" << endl; cout << "4.退出通讯录" << endl; cout << "请输入:"; int input; cin >> input; retu

WingC的博客 1274

使用trae自动生成前后端分离的web应用程序

使用ai自动生成前后端分离的web应用程序

一介书生 2524

大二数据结构实验之散列表实现通讯录(C++)

基本要求:设每个记录有下列数据项:电话号码、用户名、地址;从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;采用一定的方法解决冲突;查找并显示给定电话号码的记录;查找并显示给定用户名的记录。 进一步完成内容: 系统功能的完善: 设计不同的散列函数,比较冲突率; 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。

wying_0的博客 5887

把群晖NAS变成游戏开发服务器:Perforce与虚幻引擎深度整合的5个关键配置(含.p4ignore模板)

本文详细介绍了如何将群晖NAS配置为游戏开发服务器,重点讲解了Perforce与虚幻引擎的深度整合。通过五个关键配置节点,包括用户权限架构、Workspace策略、资产同步优化、仓库清洁度保障和编辑器深度集成,帮助小型团队打造高效开发环境。文章还提供了实用的.p4ignore模板和优化技巧,显著提升开发效率。

weixin_30430677的博客 317

自抗扰控制(ADRC)原理与MATLAB实现详解

自抗扰控制(ADRC)是一种先进的鲁棒控制策略,其核心在于通过扩张状态观测器(ESO)实时估计并补偿系统总扰动。相比传统PID控制,ADRC不依赖精确数学模型,特别适合处理非线性、时变系统。从控制原理看,ADRC将系统内部动态和外部扰动统一建模,通过带宽参数化方法实现快速响应与强抗扰能力。在工程实践中,ADRC已成功应用于无人机飞控、伺服系统等场景,MATLAB仿真显示其上升时间可比PID提升46%,抗扰动恢复时间缩短60%。典型实现包含ESO设计、扰动补偿和PD控制三部分,参数整定遵循ω₀=3~5倍系统带

weixin_33585822的博客 95

数据结构之散列表的实现

之前研究STL源码的时候发现哈希Table底层是实现看起来实现的非常的简洁,觉得自己去写一个哈希表肯定也是很简单的。但是,但是,但是我今天看了一下数据结构里面的哈希表的简单实现,才发现其实也是有很多学问在里面的,所以今天就打算自己实现一下,做一个记录,方便以后自己来查看学习。 因为哈希表是会产生哈希冲突的嘛,一般的解决方法都是采用开链法,所以今天就简单的实现一个开链法的具体步骤。 ...

dingzhenzha7040的博客 196

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1693

重拾数据结构与算法(二)循环列表的实现

什么是循坏链表 将单链表中终端结点的指针端自空指针改为指向头结点,就使整个单链表形成一 个环,这种头尾:相接的单链表称为单循环链表,简称循环链表。 循坏列表的生活情境 比出 ,你是一业务员, 家在上海。儒要经常出差,行程就是上海到北京一路上的 城市,找客户谈生意或分公司办理业务。你从上海出发,乘火车路经多个城市停留 后,再乘飞机返回上海,以后,每隔一段时间,你基本还要按照这样的行程开展业务 ...

u010391342的博客 451

0 基础学前端:100 天拿 offer 实战课(第 16 天)—— JS 数组高级方法:数据处理效率翻倍,代码更简洁

方法名核心作用回调函数返回值返回结果适用场景map数据转换转换后的新元素新数组(长度与原数组一致)格式转换、新增字段、生成 DOM 字符串filter数据筛选true(保留)/false(过滤)新数组(符合条件的元素)筛选符合条件的元素(如未完成计划、今天的评论)reduce数据汇总新的累加值任意类型(数字、对象等)求和、计数、分组、多数据汇总find查找元素true(匹配)/false(不匹配)第一个匹配的元素 /undefined。

苏打水.X的博客 133

Java 实现 MP3 音频合并工具类:摆脱 FFmpeg,高效低 CPU 的纯本地方案【需求已解决】

本方案充分发挥了 Java 音频 SPI 的潜力,实现了轻量、跨平台、低 CPU 消耗的 MP3 音频合并工具类。 对于希望在服务器或桌面应用中集成音频处理功能的开发者而言,这无疑是一个可行且优雅的解决方案。

一键难忘的博客 543

重拾数据结构(二)— 线性表(顺序 单链表)增删改查,对代码的理解

直接附代码慢慢看; 编程工具: vs2015,主要语言c++。 数据结构: 大话数据结构 #include <iostream> #include <time.h> using namespace std; #pragma region 状态申明 #define ok 1 #define error 0 #define MAXSIZE 20 typedef int S...

one-rabbit的博客 238

杰理可视化SDK开发-杰理AC1123N芯片SDK开发笔记合集

该文档主要描述 AC112N开发相关的使用说明和注意事项,收集并持续更新开发调试过程中的相关疑问和解答,对SDK介绍文档做一个补充说明。写作人:李永奉,参考项目MD-026H; AC112N-SDK项目帮助文档在杰理开发者平台(JL DP)'帮助'处进入,如本文档有与后续帮助文档或工具注释说明冲突,以后者为标准。

李永奉的博客 181

时隔一年,我又回来了!

时隔一年,又回到了csdn,打算重新开始记录自己的学习。之前学的比较杂,主要是实验室的研究方向:机器视觉和图像处理这方面的内容。主要包括图像的基础知识和halcon软件的使用,完成图像处理算法后使用c#的winform界面编程部署算法。主要学的就是halcon软件的使用和一些c#的东西。 论文开题又涉及到了深度学习目标检测的东西,需要学一些深度学习的东西,刚开学时候看了一个月的这些东西,确实挺有趣的,但是奈何太卷了,自己无论在学校层次还是实验室研究内容,还有自身条件都不符合算法的工作,只能将算法作为完成课题

effort_study的博客 293

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【重拾算法】01-STL

做程序开发,广度和深度是同样重要的,也许现在的工作中不会直接用上,但是算法、设计模式等等这些底层的知识时候熟练掌握,是我们能不能走得更远的前提,我觉得是时候,再重拾起已经快遗忘的算法,为自己的下一个三年,储备更多的基础知识。

luciozhang的博客 1257

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

重拾数据结构

重拾数据结构算法与数据结构数组&链表面试题:反转一个单链表&判断链表是否有环栈 Stack、队列Queue面试题:判断括号字符串是否有效如何改变文本的样式插入链接与图片生成一个适合你的列表创建一个表格新的甘特图功能,丰富你的文章UML 图表 最近遇到一些烦心事,想重温些简单的知识,希望可以有新的理解,让自己不要胡思乱想。学习的知识包括Java的基础部分,参考书籍《Java核心技术》卷一 / 卷二;以及以下提到的数据结构。 下图是区块链的一个结构,可以很容易看出上面是一个基础的单向链表结构,下

weixin_45044097的博客 236

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【重拾】数据结构之一

前言 久违来一发,回来学校也都两周了,想想也该定下来学学点什么了,突然发现以前学的好像都已经忘的差不多了,而且以前学的也学得云里雾里,所以今天我要重拾数据结构。 何为数据结构 数据是描述客观事实的数和字符的集合,人们通常以数据元素作为数据的基本单位,比如52班的每个学生记录都是一个数据元素数据项是具有独立含义的最小数据单位。 数据结构是指所有数据元素已经数据元素之间的关系数据结构...

dizhengjia6712的博客 198

重拾408

从开发角度重拾408。

weixin_44913826的博客 124

重拾c++、数据结构与算法应用 原书第二版(一)ty

引用就是别名,是对一个变量重新起一个名字,两个名字是同一个存储空间,函数调用时,可以定义值传参,也可以定义引用传参,真正使用时都是把变量名传过来,内部机制一个是复制值,一个是起别名,可以用常量引用参数来确保传进来的参数不会被误修改。//c++中有重新定义c的某头文件,那么原本c的同名头文件(+.h)就不支持了,如果c++中没有定义c中的某头文件,那么该头文件可以以(.h)或(c某)的方式被c++继承。程序开发基本准则:正确且美,简洁,有注释,易扩展,时间最优,空间最优,通用性强,适用各种平台。

weixin_46387488的博客 259

重拾数据结构之数组

数组是一种基本数据结构,用于按顺序存储元素的集合。其中的每个元素都可以使用数组索引来识别。

aZhe_Zz的博客 150

【带你重拾Redis】Redis数据结构及使用场景

Redis数据结构 Redis有着非常丰富的数据结构,这些数据结构可以满足非常多的应用场景, 如果对这些数据结构有一个比较清晰的认知,使用Redis也会更加得心应手。 Redis主要支持以下数据结构: String(字符串) List(双端链表) Hash(Hash字典) Set(无序集合) Sorted Set(有序集合) 数据结构 描述 实现 String 可以存储字符串,整型和浮点型等类型的数据。适合于简单的K-V数据场景。 Redis并没有使用字符数组来实现这一数据类型,而是自己

LoveSummer 1060

重拾数据结构(1)

一、数据结构一览 很好的一篇博客,适合新手和复习的看(深入的话需要多查资料) https://blog.youkuaiyun.com/yeyazhishang/article/details/82353846

weixin_43840373的博客 180

​重拾务中台前端设计》,之后就再也没有写过公开的前端技术文章。虽然我写前端技术文章的初衷是为了分享给更多的人看,

上一次写前端技术博客是2年前,也就是2022年年底,写了一篇《浅谈业务中台前端设计》,之后就再也没有写过公开的前端技术文章。虽然我写前端技术文章的初衷是为了分享给更多的人看,让大家少才一些坑,但是随着时间的推移,有种用爱发电的感觉,所以就停更了。一晃2年过去了,消失的这2年我做了什么呢?不知道大家有没有发现,曾经的一些前端技术博客网站,文章很久都没有更新甚至网站都挂了,比如我收藏夹里的奇舞团(网站挂了),淘系技术博客(网站挂了),腾讯AlloyTeam(上一次更新还是在2021年4月16日),百度的FEX(

qq_39220145的博客 1044

重拾Java之数据结构一链表

链表是一种存储结构,数据元素的是通过链表中的次序实现的。可以把链表理解为一种加了地址的数组,只是说这个地址并不是连续的。

qq_73752061的博客 957

重拾数据结构~~~插入排序

写自己理解的插入排序代码 之前学习数据结构一直都没有想着去复现经典的算法,只是对思想掌握个大概,一直没有形成系统的知识链路,很容易忘记已经学过的东西,一到了动手操作就得找各种资料复习,于是想重新过一遍基础,坚持~~~ 1.(自己的理解~插入排序):插入排序就是将单个数据插入到有序的序列中,这个有序序列可以是单个数据,这基本形成我的思路 2.代码复现 #include<stdio.h> ...

小小拓哥 186
上一篇: Android中的杂七杂八
下一篇: 重拾数据结构(一)
z529905310
博客等级 码龄10年 11粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值