这就是算法:日常生活中的算法应用

news2024/11/23 12:24:16

日常小例

当我们一听到“算法”这个词,脑海里可能立刻浮现出数学公式和复杂计算的画面。

但事实上,算法并不总是那么高深莫测,很多算法其实是基于我们日常生活中随处可见的基本逻辑。

在深入讨论算法之前,我想先分享一个让人好奇的事实:你可能已经无意识地掌握了一些算法,并且在日常生活中自然而然地使用它们。

接下来,我会通过一些具体的例子来证明这一点。

1.找页码

在书本里,每个页面都有一个对应的页码。

而且每个页码都是按照一定的顺序编排的。

假设我们有这样一本书,他一共只有10页,我们要找到第7页。

我们通常会以下图的方式去查找。

  1. 翻开书本约一半的页数,查看该页的页码什么,假设本页为5.

  2. 由于在页码中 7位于5 之后,所以排除书本前半部分,查找范围缩小到后半部分。

  3. 不断重复步骤 1. 和 步骤 2. ,直至找到页码为7的页码为止。

看书找页码这个日常生活习惯,实际上就是著名的“二分查找”算法。

从数据结构的角度,我们可以把书本视为一个已排序的“数组”;

从算法的角度,我们可以将上述找页码的一系列操作看作“二分查找”。

2.整理钱包零钱

每个人钱包里面或多或少都有一些零钱,平时的时候估计都是杂乱的放着。

用的时候就一下拿出来。不方便。

所以我们习惯性的把零钱排序。使其从小到大的顺序排列。

实现步骤按下图所示。

  1. 将零钱划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张零钱已经有序。

  2. 在无序部分抽出一张零钱,插入至有序部分的正确位置;完成后最左 2 张零钱已经有序。

  3. 不断循环步骤 2. ,每一轮将一张零钱从无序部分插入至有序部分,直至所有零钱都有序。

上述整理零钱的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。

许多编程语言的排序库函数中都有插入排序的身影。

这就是算法

通过上面两个简单的例子,我想你已经很明白算法到底是什么了。

我们下面再总结一下算法的理论。

算法定义

算法( algorithm )是在有限时间内解决特定问题的一组指令或操作步骤,它具有以下特性。

  1. 明确性:每一步都清晰明了,不含糊。

  2. 有穷性:步骤有限,不会无限循环下去。

  3. 输入:需要一些初始信息或数据来开始工作。

  4. 输出:完成步骤后,会得到一个结果或答案。

  5. 可行性:每一步都是可执行的,不会要求计算机做它做不到的事。

数据结构

数据结构,简单来说,就像是我们组织和存储信息的方式。

就像你可能会用书架来放书,用文件夹来整理文件一样,数据结构是计算机用来存储和组织数据的方法。

数据结构有几个关键点:

  1. 存储:数据结构决定了数据在计算机内存中存放的方式。

  2. 访问:它决定了我们如何快速地找到和使用数据。

  3. 操作:数据结构还决定了我们如何添加、删除或修改数据。

  4. 效率:不同的数据结构在执行这些操作时的效率不同。

数据结构与算法的关系

数据结构和算法就像是厨房里的食材和菜谱。

数据结构是食材,它决定了你可以用来做什么菜,以及这些食材如何存放在冰箱里。

算法则是菜谱,它告诉你如何使用这些食材来做出一道美味的菜肴。

他们的关系如下:

  1. 相互依赖:好的算法需要合适的数据结构来支持。就像好的菜谱需要合适的食材一样。如果你的数据结构不适合你的算法,那么算法的效率可能会大打折扣。

  2. 效率:数据结构的选择可以影响算法的效率。就像选择快速烹饪的食材可以节省时间一样,选择高效的数据结构可以让算法运行得更快。

  3. 功能:不同的数据结构有不同的功能,就像不同的食材有不同的用途。例如,数组适合快速访问元素,而链表适合快速插入和删除元素。

  4. 选择:在编程中,你可以根据需要选择不同的数据结构和算法。这就像是根据你想做的菜来选择食材和菜谱。

  5. 优化:通过优化数据结构和算法,你可以提高程序的性能。这就像是通过改进菜谱和烹饪技巧来提高菜肴的味道和制作效率。

总结

无论是简单的烹饪还是遥远的星际旅行,算法在解决问题的过程中扮演着不可或缺的角色。

自从计算机诞生以来,我们就能够利用编程技术将数据组织起来,存储在计算机的内存里。

同时,我们编写的代码可以指挥中央处理器(CPU)和图形处理器(GPU)来运行算法。

这使得我们能够将现实生活中的难题转移到计算机上,利用计算机的强大计算能力,以更加快速和高效的方法来处理各种棘手的问题。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,gonghao同名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1860174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python基础语法 003-2 数据类型字典

1 字典 1.1 字典的表示 字典:也是存储多个数据的,存储多个数据,不记得第二个存储什么用字典,存储多个数据首推列表; 1.1.1 表示方法: {‘key’ : value},用逗号隔开 #列表表示 my_songs [花海, 棉花糖…

2023国家最高科学技术奖薛其坤院士:科学家的幸福感来自于哪里

内容来源:量子前哨(ID:Qforepost) 文丨浪味仙 排版丨沛贤 深度好文:2000字丨8分钟阅读 6 月 24 日,2023 年度国家最高科学技术奖在京揭晓,薛其坤院士荣获中国科技界崇高荣誉,这不…

pyCharm项目更改目录后,执行路径未更新的解决办法

最头疼环境问题。 换电脑,原python脚本打成zip包,全部拷贝到新电脑上。一开始放到路径A下,不清楚是路径太长还是路径含有中文,执行失败。于是,更换到路径B,结果,仍然执行失败。Run中显示的信息…

【大数据】—量化交易实战案例双均线策略(移动平均线)

声明:股市有风险,投资需谨慎!本人没有系统学过金融知识,对股票有敬畏之心没有踏入其大门,今天用另外一种方法模拟炒股,后面的模拟的实战全部用同样的数据,最后比较哪种方法赚的钱多。 量化交易…

天途重磅推出无人机教管平台3.1版及飞课APP

天途无人机教管平台,是一款为院校和培训机构等企业级客户提供的公开版无人机在线培训系统,包含后台管理的【教管平台】和终端的【掌上天途APP】。 天途历经4年上百次调研和迭代打磨,已为一百多家院校和培训机构等企业级客户解决了无人机教学和…

【2024最新版】Windows11 23H2中文家庭版:免费下载!

Windows 11 23H2中文家庭版系统拥有稳定的性能、丰富的功能和卓越的安全性,很多用户都喜欢给自己的电脑安装上这个版本。但是,许多新手用户不清楚在哪里才能下载到Windows11家庭版?接下来小编给大家带来2024年最新的Windows 11 23H2中文家庭版…

基于rouyi框架的多租户改造

基于rouyi框架的多租户改造,重点是实现权限管理和数据隔离。权限管理相当于从原来的“顶级管理员admin-普通用户user”转变为“顶级管理员admin-租户管理员tanantAdmin-普通用户user”。数据隔离主要通过分库、分表、表内设置tenantId字段进行过滤三种方式。 本文主…

前端项目外包出去,是我痛苦的开始。如何破?

不止一个老铁给我反馈,他们把其前端项目外包出去,非常的痛苦,远不如用自己的员工省心。明面上钱省了,实际精力大量耗费在上面,一算账并没省,反而闹了一肚子气,问我这事该如何破?其实…

IEEE Signal Processing Letters投稿记录

0.写在前面: 该期刊4页正文,第5页只能是参考文献,篇幅紧凑。 最多只有一次小修机会,或者直接接收。网上说平均审稿周期是2.7个月。 祝愿大家都能如愿,一次接收! 期刊网址:投稿 投稿网址&…

被忽视的商机:全民拼购模式如何助力企业实现惊人业绩

在当今的商业环境中,一个被大多数人忽视但实则蕴藏着巨大潜力的模式正在悄然崭露头角。不同于传统商业模式的惯性思维,这一模式在细节上进行了巧妙的调整,带来了意想不到的效果。我的一位客户便凭借这一策略,实现了令人瞩目的业绩…

Java项目毕业设计:基于springboot+vue的幼儿园管理系统

数据库:MYSQL5.7 **应用服务:Tomcat7/Tomcat8 使用框架springbootvue** 项目介绍 管理员;首页、个人中心、用户管理、教师管理、幼儿信息管理、班级信息管理、工作日志管理、会议记录管理、待办事项管理、职工考核管理、请假信息管理、缴费信息管理、幼儿请假管理…

轻松驾驭多云存储,不再为文件流转烦恼,可道云teamOS带你走进便捷的多云时代

不知道大家有没有遇到过这样的问题:使用了不同云平台的存储,但不同的平台存储就存在文件不流通、共享困难、管理困难等问题。 对于这种情况,我们该如何进行资源整合,实现不同挂载存储之间的文件管理与流转? 这些问题…

Linux基础 - shell基础

目录 零. 简介 一、常见的 Shell 类型 二、Shell 命令格式 三、基本命令 四、通配符 五、重定向 六、管道 七、变量 八、条件判断和流程控制 零. 简介 Shell 是一种命令解释器,在 Ubuntu 系统中,它负责接收用户在命令行中输入的命令&#xff0c…

AI大神 Sebastian Raschka 发布新书《从零开始构建大语言模型》

Sebastian 热衷于开源软件,还喜欢写作,撰写了畅销书《Python Machine Learning》(《Python 机器学习》)和《Machine Learning with PyTorch and ScikitLearn》。 最近,Sebastian Raschka 发布了新书《Build a Large L…

pytorch神经网络训练(LeNet-5)

LeNet-5 导包 import osimport torchimport torch.nn as nnimport torch.optim as optimfrom torch.utils.data import Dataset, DataLoaderfrom PIL import Imagefrom torchvision import transforms 定义自定义图像数据集 class CustomImageDataset(Dataset):def __init_…

Git的安装以及使用

一.简单介绍 1.1版本控制 版本控制是指对软件开发过程中各种程序代码,配置文件及说明文档等文件变更管理,是软件配置管理的核心思想之一。 版本控制最重要的内容是追踪文件的变更,它将什么时候,什么人更改了文件的什么内容等信息忠实的记录…

社交小心机:特别的动态给特别的她/他

在社交媒体盛行的今天,微信朋友圈成了我们分享生活点滴的重要平台。 但是,你是否有过这样的烦恼——有些动态只想和特定的人分享,而不是所有人?别担心,今天我就来教大家如何巧妙地设置朋友圈权限,让你的分…

【2024.6.25】今日 IT之家精选新闻

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

C语言 循环语句while 2

应用实例 int main() {char password[20] { 0 };printf("输入密码:>");scanf("%s", password);printf("请确认输入密码(Y/N):>");//清理缓存区int tmp 0;while ((tmp getchar()) ! \n){;}int ch getchar();if (ch Y){pri…

RAG实践 - 搭建本地知识库 - Ollama + AnythingLLM

0,什么是RAG? RAG,即检索增强生成(Retrieval-Augmented Generation),是一种先进的自然语言处理技术架构,旨在克服传统大型语言模型(LLM)在处理开放域问题时的信息容量限…