初识算法和数据结构P1:保姆级图文详解

news/2025/1/16 3:48:37/

文章目录

前言

亲爱的家人们,技术图文创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,谢谢大家!有问题请私信或加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、独立于编程语言

数据结构算法是独立于编程语言的概念。不仅应用于某种编程语言,还在多种编程语言中实现。这使得数据结构算法的学习具有广泛的适用性。


http://www.ppmy.cn/news/1563503.html

相关文章

概率函数,累计分布函数

四. 累计分布函数 1. 累计分布函数(CDF, Cumulative Distribution Function) 累计分布函数是用来描述随机变量取值小于或等于某个给定值的概率。它适用于离散型和连续型随机变量,并且能够通过概率质量函数(PMF)或概率…

C# 获取某日期所属当周、当月的第一天和最后一天

见过不少人、经过不少事、也吃过不少苦,感悟世事无常、人心多变,靠着回忆将往事串珠成链,聊聊感情、谈谈发展,我慢慢写、你一点一点看...... 1、获取某日期所在周的第一天 public DateOnly GetFirstDayOfWeek(DateTime dateTime) {var culture = CultureInfo.Curre…

Python海龟绘图库:从入门到精通 - Python官方文档(三万字解析!)

turtle --- 海龟绘图 源码: Lib/turtle.py 概述 海龟绘图是对 最早在 Logo 中引入的受欢迎的几何绘图工具 的实现,它由 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 在 1967 年开发。 入门 请想象绘图区有一只机器海龟,起始位置在…

ClickHouse-CPU、内存参数设置

常见配置 1. CPU资源 1、clickhouse服务端的配置在config.xml文件中 config.xml文件是服务端的配置,在config.xml文件中指向users.xml文件,相关的配置信息实际是在users.xml文件中的。大部分的配置信息在users.xml文件中,如果在users.xml文…

后端技术选型 sa-token校验学习 中 文档学习

目录 依赖 配置文件 登录验证 登录与注销 Cookie 自动注入 前后端分离(无 Cookie 模式) 何为 Cookie 何为无 Cookie 模式? 解决方案 1、后端将 token 返回到前端 2、前端将 token 提交到后端 其它解决方案? 自定义 Token 前缀 [ 记住我 ] 模式 前后端…

数据结构重要概念清单

数据结构重要概念清单 数据结构是计算机科学中的一个核心概念,以下是一些比较重要的概念清单,你可以对照检查自己的掌握情况: 一、基本概念 数据:所有能被计算机识别、存储和处理的符号的集合。数据元素:数据的基本…

什么是MVCC

MVCC(Multi - Version Concurrency Control)即多版本并发控制。 一、背景和概念 在数据库系统中,并发控制是非常重要的。当多个事务同时访问和修改数据时,需要一种机制来确保数据的一致性和正确性。MVCC 是一种并发控制的技术&a…

我的年度总结

这一年的人生起伏:从曙光到低谷再到新的曙光 其实本来没打算做年度总结的,无聊打开了帅帅的视频,结合自己最近经历的,打算简单聊下。因为原本打算做的内容会是一篇比较丧、低能量者的呻吟。 实习生与创业公司的零到一 第一段工…