什么是算法?

2023-11-02

什么是算法?

当人们提到“算法”一词,往往就会把它们当成专属于“人工智能”的范畴,很多专业的计算机人士也是,提起算法就头疼,不知道如何学习算法,慢慢的对算法就会失去兴趣,算法不仅仅是计算机行业特有的,在我们的生活中也处处存在着算法,算法是专注于解决问题的过程和方法。

既然提到了算法是解决问题的方法,哪方法也是有好有坏的,算法是在特定问题下解决问题的方法,证明一个算法的好坏,就要看它的时间复杂度和空间复杂度。

通过一个实例来说明算法的好坏,假如李四是班长,老师叫李四统计下本班的人数是多少?

李四非常自信的一个、两个、三个的数了起来,然后报告老师,本班总共8人,老师说人数少,可以这样数,然后人数过大,是不是就非常浪费时间了,那你的时间复杂度是不是就大了,想想还有没更好的办法!。

基于这个想法,可不可以以两个一组,进行来分,最后看下综合是多少组乘于它组的总人数,是不是就是它的总人数,那可不可以以十人一组或者二十人一组呢,这样是不可取的,因为多人一组还是要数的,最后时间复杂度还是要增大的。

结合以上两个算法可以得出,组的概念还是有用,哪能不能更高效大的方法呢?如果在人数较多的情况下,可不可以按照房间的概念来区分的,假设每个房间可以容纳20人,看最后一个容纳多少人,前面每个房间数乘于容纳的人数再加上最后一个房间容纳的人数之和,就可以得到最终的人数。

以房间号计算的方式,虽然可以快速计算出结果,但是它所消耗的空间复杂度是大的,反而有点得不偿失的,如果不考虑消耗的内存大小,可以考虑使用这种方式。

思考这样一个问题,如果可以投入一点的成本,是不是可以降低它的时间复杂度和空间复杂度呢?!

其实,如果可以购买一些记事本,每次来校的学生都要进行登记,我们只需要计算记事本的人数和有多少个记事本,是不是可以更快,而且高效的计算出学生的总人数呢?

以上几种算法都可以达到想要的结果,但是考虑到实际应用的场景以及后期更好的性能输出,还是要考虑它的时间复杂度和空间复杂度作为一个好算法的衡量标准,其次就是他的可读性。

博客来源:雨夜的博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是算法? 的相关文章

随机推荐

  • PyTorch教程—B站刘二大人笔记

    PyTorch教程 B站刘二大人笔记 PyTorch代码笔记 1 linear py 2 gradient py 3 back py 4 pytorch py 5 logistic py 6 multiple py 7 data py 8
  • C++链表的建立,排序,删除

    描述 使用随机数建立链表节点 节点的结构很简单 就是一个整形数 随机数 和一个指针 有三个函数 第一个函数建立链表 第二个函数对链表进行排序 第三个函数将链表中所有有重复数字的节点删除 只留只出现过一次的节点 输入 链表的节点数 输出 1
  • Beyond Joint Demosaicking and Denoising: An Image Processing Pipeline for a Pixel-bin Image Sensor

    Abstract 像素合并被认为是解决智能手机相机硬件限制的最突出的解决方案之一 尽管有许多优点 但这种图像传感器必须采用容易产生伪影的非拜耳滤色器阵列 CFA 才能实现合并功能 相反 明确地使用此类 CFA 模式执行去马赛克和去噪等基本图
  • stm32项目平衡车详解(stm32F407)下

    stm32项目平衡车详解 stm32F407 下 本文章学习借鉴于创客学院团队 以表感谢 教学视频 B站学习地址 HC SRO4 超声波测距避障功能开发 TSL1401 CCD摄像头实现小车巡线功能 小车通信功能分析及ESP32模块介绍 o
  • web前端代码大全_Web前端开发代码规范(基础)

    一 引言 对于一个多人团队来说 制定一个统一的规范是必要的 因为个性化的东西无法产生良好的聚合效果 规范化可以提高编码工作效率 使代码保持统一的风格 以便于代码整合和后期维护 二 HTML CSS规范 2 1 浏览器兼容 根据公司业务要求而
  • 阿里云云效新版流水线部署成功

  • 微信公众号连接服务器显示404,WordPress 微信机器人自动回复显示 404 错误解决办法...

    WordPress 微信机器人自动回复显示 404 错误解决办法 2018 10 11 11 12 14 1412 views 最近测试了一下我的微信公众号 多彩阳新 发现由本博客自动返回的链接挂了 关于这个问题我们经过排查 发现在自动回复
  • 演化模型(Evolutionary Model)

    什么是演化模型 演化模型主要针对事先不能完整定义需求的软件开发 用户可以给出待开发系统的核心需求 并且当看到核心需求实现后 能够有效地提出反馈 以支持系统的最终设计和实现 软件开发人员根据用户的需求 首先开发核心系统 当该核心系统投入运行后
  • Leetcode刷题01-- 所有蚂蚁掉下来前的最后一刻

    原题 有一块木板 长度为 n 个 单位 一些蚂蚁在木板上移动 每只蚂蚁都以 每秒一个单位 的速度移动 其中 一部分蚂蚁向 左 移动 其他蚂蚁向 右 移动 当两只向 不同 方向移动的蚂蚁在某个点相遇时 它们会同时改变移动方向并继续移动 假设更
  • Xcode 5 出现 unable to create '/Users/XXX/Library/Developer/Xcode....'无权限问题

    打开终端 输入 sudo chmod R 777 Users XXX Library Developer 搞定
  • 你是如何看待“孔乙己的长衫”?

    学历是一个十分有争议的话题 观点不一 这使得这个话题讨论起来令人热血沸腾 就人生而言 学历是否会成为敲门砖或枷锁 可以说是个纯粹的看法和态度问题 首先 我们要看到学历本身 学历是告诉人们你有哪些学科的专业知识和能力 但是这并不代表你一定能够
  • java连接rocksdb_rocksdb编译步骤——Java、Golang、mac

    如果不是必要不建议自己编译rocksdb 编译的过程比较耗时费力 现在已经有很多编译好的文件可供使用 Java org rocksdb rocksdbjni 5 10 3 Go版本 https github com leeyazhou go
  • 使用vcpkg编译、管理C++类库

    为什么使用vcpkg 1 vcpkg提供了一种类似linux编译 安装第三方类库的方式 不需要手动下载源码 编译源码 2 vcpkg自动管理已经安装的类库 使用集成开发环境如visual studio时直接引用对应的头文件就可以的 不需要配
  • React +TS实现拖拽列表

    使用React TS编写逻辑代码 less编写样式代码 不依赖第三方库 开箱即用 最近写的拖拽组件 分享给大家 直接上代码 首先看看如何使用 自己定义的组件需要包裹在DragList Item组件中 import DragList from
  • 遍历磁盘根目录

    for char i A i lt Z i 遍历所有磁盘 char dir 20 i 组成磁盘名称 char path 100 定义文件路径 UINT type GetDriveType dir 获取磁盘类型 if type DRIVE F
  • 网络与信息安全基础知识--网络安全

    说在前面 本系列文章专注于软考备考复习内容梳理 文章内容是对教材中知识点和考点的提炼 备考过程中可以有针对的进行复习 减少阅读量 有的放矢 导航目录 一 网络安全概述 二 网络的信息安全 1 信息的存储安全 2 信息的传输安全 三 防火墙技
  • Mac安装Netcat教程

    Netcat可以用于测试通信连接 Mac安装Netcat方式 打开终端输入 brew install netcat 安装好以后测试 输入 nc 可以看到是这样的 itzhuzhu itzhuzhudeMacBook Pro brew ins
  • 五、【服务器】基本概念-1

    服务器标准 ATCA AdvancedTelecom Computing Architecture 国际标准 ATCA脱胎于在电信 航天 工业控制 医疗器械 智能交通 军事装备等领域应用广泛的新一代主流工业计算技术 CompactPCI标准
  • 网络系统实现技术之IPX与SPX

    IPX SPX Novell NetWare网络 Novell公司为适应网络发展 将主机网络转换为PC网络 开发了Novell NetWare网络系统 该系统中基于客户机 服务器模式 以普通PC机做为客户机 以性能强大的服务器做为服务器 为
  • 什么是算法?

    什么是算法 当人们提到 算法 一词 往往就会把它们当成专属于 人工智能 的范畴 很多专业的计算机人士也是 提起算法就头疼 不知道如何学习算法 慢慢的对算法就会失去兴趣 算法不仅仅是计算机行业特有的 在我们的生活中也处处存在着算法 算法是专注