初识算法和数据结构P1:保姆级图文详解
文章目录
- 前言
- 1、算法例子
- 1.1、查字典(二分查找算法)
- 1.2、整理扑克(插入排序算法)
- 1.3、货币找零(贪心算法)
- 2、算法与数据结构
- 2.1、算法定义
- 2.2、数据结构定义
- 2.3、数据结构与算法的关系
- 2.4、独立于编程语言
前言
亲爱的家人们,技术图文创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,谢谢大家!有问题请私信或加V:18252587519。
1、算法例子
1.1、查字典(二分查找算法)
①问题描述:
在查找字典中的某个字时,常按照拼音的字母顺序进行查找。该过程在查找过程中不断缩小范围,逐步定位目标字。
②算法分析:
查字典的过程实际上是二分查找的经典实现。具体步骤包括:
将字典分为两部分,通过比较中间位置的字母来决定是否查找前半部分或后半部分。
每次根据字母顺序排除一半的范围,直到找到目标字。
③算法本质:
二分查找算法在数据量大的情况下能显著提高查找效率,它的时间复杂度为 O(log n),比起线性查找(O(n))更为高效。
1.2、整理扑克(插入排序算法)
①问题描述:
在打牌时需要将手中的扑克牌从小到大排列。该过程通过不断将一张扑克牌插入到已经排序好的部分来实现。
②算法分析:
扑克牌整理的过程本质上就是插入排序算法。在每一轮中,从无序部分抽出一张扑克牌,并将其插入到有序部分的正确位置,直到所有扑克牌有序为止。
③算法本质:
插入排序是一种简单且直观的排序算法,适用于小规模的数据集。它的时间复杂度为 O(n^2),但在数据量较小或已接近有序时,表现较好。
1.3、货币找零(贪心算法)
①问题描述:
在超市购物时,收银员需要找零。收银员会通过选择面额较大的货币来尽量减少找零次数。
②算法分析:
该过程采用贪心算法,每一步都选择当前最优的选择(即用最大的面额找零),直到达到所需的零钱。
③算法本质:
贪心算法通过在每个步骤选择局部最优解来期望得到全局最优解。尽管这种策略在某些情况下无法保证最优解,但对于大多数货币找零问题,它能够提供有效的解决方案。
2、算法与数据结构
2.1、算法定义
①定义:解决特定问题的一组指令或操作步骤,通常具备以下几个特性:
i:明确的问题定义:包括输入和输出的清晰界定。
ii:可行性:算法能在有限的步骤、时间和内存空间内完成。
iii:确定性:算法的每个步骤都有明确的意义,且在相同的输入和条件下,输出结果是一致的。
2.2、数据结构定义
①定义:组织和存储数据的方式,包含数据内容、数据间的关系以及对数据的操作方法。其设计目标包括:
i:节省空间:减少内存占用。
ii:高效操作:包括数据的访问、添加、删除和更新等操作。
iii:简洁性:数据结构应简洁并提供足够的逻辑信息,帮助算法高效执行。
iv:设计的权衡:在设计数据结构时,常常需要在不同方面作出权衡,例如:
链表:在数据添加和删除上更便捷,但牺牲了数据访问的速度。
图:提供更丰富的逻辑信息,但需要更多的内存空间。
2.3、数据结构与算法的关系
i:数据结构是算法的基石:算法需要基于某种数据结构来进行数据的存储和操作。
ii:算法为数据结构注入生命力:数据结构本身只能存储数据,通过算法才能实现对数据的操作和问题的解决。
iii:算法的执行效率与数据结构密切相关:不同的数据结构在执行同一个算法时,可能会导致效率上的差异,选择合适的数据结构至关重要。
类比拼装积木:数据结构与算法可以比作一套拼装积木:
输入数据:未拼装的积木。
数据结构:积木的组织形式,包括形状、大小、连接方式等。
算法:一系列拼装积木的操作步骤。
输出数据:最终拼装好的积木模型。
2.4、独立于编程语言
数据结构和算法是独立于编程语言的概念。不仅应用于某种编程语言,还在多种编程语言中实现。这使得数据结构和算法的学习具有广泛的适用性。
相关文章:

初识算法和数据结构P1:保姆级图文详解
文章目录 前言1、算法例子1.1、查字典(二分查找算法)1.2、整理扑克(插入排序算法)1.3、货币找零(贪心算法) 2、算法与数据结构2.1、算法定义2.2、数据结构定义2.3、数据结构与算法的关系2.4、独立于编程语言…...

【Go】Go Gorm 详解
1. 概念 Gorm 官网:https://gorm.io/zh_CN/docs/ Gorm:The fantastic ORM library for Golang aims to be developer friendly,这是官网的介绍,简单来说 Gorm 就是一款高性能的 Golang ORM 库,便于开发人员提高效率 那…...
【IDEA版本升级JDK21报错方法引用无效 找不到符号】
java: 方法引用无效 找不到符号 符号: 方法 getFirst() 位置: 接口 java.util.List 升级JDK21版本遇到问题,报错找不到符号 但是点进去又能发现这个函数,证明能够找到这个方法,但是就是报错 java: 方法引用无效 找不到符号 符号: …...
Node.js 版本管理工具完全指南
Node.js 版本管理工具完全指南 目录 1. nvm (Node Version Manager)2. n (Node Package Manager)3. fnm (Fast Node Manager)4. Volta5. 工具对比 1. nvm (Node Version Manager) 1.1 安装指南 macOS/Linux # 使用 curl 安装 curl -o- https://raw.githubusercontent.com…...

JavaSE学习心得(多线程与网络编程篇)
多线程-网络编程 前言 多线程&JUC 多线程三种实现方式 第一种实现方式 第二种实现方式 第三种实现方式 常见成员方法 买票引发的安全问题 同步代码块 同步方法 Lock锁 生产者和消费者 常见方法 等待唤醒机制 练习 抢红包 抽奖 多线程统计并求最…...
平均精确率均值(mAP)
mAP(mean Average Precision,平均精确率均值) 并不是传统意义上的“精度”(Accuracy),而是一种专门用于评估目标检测、图像分割或信息检索等任务的性能指标。它更全面地反映了模型在不同类别和不同置信度阈…...

VUE学习笔记1__创建VUE实例
核心步骤 <div id"app"><!-- 这里存放渲染逻辑代码 --><h1>{{ msg }}</h1><a href"#">{{count}}</a> </div><!-- 引入在线的开发版本核心包 --> <!-- 引入核心包后全局可使用VUE构造函数 --> <…...

Inxpect毫米波安全雷达:精准检测与动态保护,工业自动化可靠选择
Inxpect毫米波安全雷达具备“精准检测、动态区域保护、环境适应性”三大核心功能。在工业自动化和机器人系统里,这些功能发挥着重要作用,有助于提升安全性与效率。Inxpect雷达运用毫米波技术,在诸如存在灰尘、烟雾或碎屑等复杂环境中,也能保持…...

基于禁忌搜索算法的TSP问题最优路径搜索matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于禁忌搜索算法的TSP问题最优路径搜索,旅行商问题(TSP)是一个经典的组合优化问题。其起源可以追溯到 19 世纪初,…...

C51交通控制系统的设计与实现
实验要求: 本题目拟设计一个工作在十字路口的交通信号灯控制系统,设东西方向为主干道A,南北方向为辅助干道B。要求:(1)用发光二极管模拟交通灯信号;(2)灵活控制主、辅干…...
深度学习的超参数
1. 引言 1.1 什么是超参数? 在机器学习和深度学习中,超参数(Hyperparameter) 是在模型训练前由开发者设置的参数,这些参数决定了模型的训练过程和模型的结构。例如: 神经网络的层数和每层神经元的数量。…...
网络安全面试题及经验分享
本文内容是i春秋论坛面向专业爱好者征集的关于2023年面试题目和答案解析,题目是真实的面试经历分享,具有很高的参考价值。 shiro反序列化漏洞的原理 Shiro反序列化漏洞的原理是攻击者通过精心构造恶意序列化数据,使得在反序列化过程中能够执…...

【Golang 面试题】每日 3 题(三十一)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...

微服务架构:挑战与机遇并存
微服务架构在提升系统灵活性、可扩展性和容错性的同时,也引入了一系列挑战。微服务带来的挑战主要有以下几点: 1. 系统复杂性增加:想象一下,你原本有一个大厨房(单体应用),里面有几个大厨&…...
Vue语音播报功能
使用Web Speech API的SpeechSynthesis接口来实现文本转语音 Web Speech API可能不在所有浏览器中都能完美支持 特别是旧浏览器 在生产环境中,你可能需要添加功能检测和后备方案。<template><div><textarea v-model"text" placeholder&quo…...

【Java设计模式-4】策略模式,消灭if/else迷宫的利器
各位Java编程小伙伴们!今天咱们要一起探索一个超级厉害的Java设计模式——策略模式,它就像是一把神奇的魔法剑,专门用来斩断那些让我们代码变得乱糟糟的if/else语句迷宫! 一、if/else的烦恼 在编程的奇妙世界里,我们…...

citrix netscaler13.1 重写负载均衡响应头(基础版)
在 Citrix NetScaler 13.1 中,Rewrite Actions 用于对负载均衡响应进行修改,包括替换、删除和插入 HTTP 响应头。这些操作可以通过自定义策略来完成,帮助你根据需求调整请求内容。以下是三种常见的操作: 1. Replace (替换响应头)…...
【AI学习】地平线首席架构师苏箐关于自动驾驶的演讲
在地平线智驾科技畅想日上,地平线副总裁兼首席架构师苏箐(前华为智驾负责人)做了即兴演讲,以下是其演讲的主要内容: 对自动驾驶行业的看法 自动驾驶的难度与挑战:苏箐表示自动驾驶非常难,他做自…...
QILSTE H11-D212HRTCG/5M高亮红绿双色LED灯珠 发光二极管LED
型号:H11-D212HRTCG/5M,一款由QILSTE(HongKong)Technology Co., Ltd精心打造的高亮度红绿双色LED产品,其尺寸仅为2.01.251.1 mm,却蕴含着强大的光电特性。这款产品采用透明平面胶体封装,不仅外观…...

2️⃣java基础进阶——多线程、并发与线程池的基本使用
一、概念介绍 什么是线程,什么是进程,两者有什么关系? 进程是操作系统资源分配的独立单位;而线程是操作系统能够进行调度和分派的最小单位;线程包含于进程之中,是进程中的实际运作单位。 例如:…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...