您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

一文读懂,“算法”究竟是个啥?

时间:2022-04-06 10:04:49  来源:今日头条  作者:科技千里眼

听起来高大上的“算法”,其实一点也不难学!

本专栏用最简洁的语言和逻辑,脱离编程语言的束缚,在最短时间内,从算法概念/程序结构/数据结构/算法思想/应用方法这五个方面,跟您一起,轻松地理解算法知识,掌握算法思维。

算法太重要了

人工智能”,“机器学习”,“大数据”,这些越来越常听到的字眼,背后其实都是一个个“算法”。

诸多高新科技,似乎都离不开“算法”的“加持”。

科学家 / 工程师 / 技术人员,现在如果不懂点算法,都不太好意思了。

算法其实很容易

听着这么高大上的“算法”其实一点也不难学!

为啥讲算法的书却很难看懂?

就是讲得太复杂了么,不同编程语言还都不一样。

专栏特点

1. 语言和逻辑极简,化复杂为通俗易懂,极速掌握;

2. 不使用编程语言!是的,这才是算法入门的最速方法;

3. 直击算法思维的核心点,不在次要知识上浪费时间。

算法极速入门——一文读懂,“算法”究竟是个啥?

 

什么是“算法”

算法,一看字面就知道,肯定是“计算方法”的简称啦,特指“计算机的计算方法”,所以,算法是由电脑程序来实现的。

算法,英文叫Algorithm,就是为了让电脑解决一个问题而设计出来的一套计算方法,这套计算方法的设计是依靠“数学模型”的建立。

也就是说,程序员在设计算法之前,会将实际问题理解分析,归纳为一个“具体的数学问题”

算法极速入门——一文读懂,“算法”究竟是个啥?

算法是解决问题的计算方法

算法有这么几个特征

确定

算法的每一个步骤都有“明确的意义”,对于算法结果的预期也是明确的。

2 有穷

算法不能一直算,停不下来是不行的;要有一个明确的结束条件,要不然算到“天荒地老”还有什么意义呢?

可行

有个笑话说一个人面试会计师,算数特别快瞬间出结果,但是就是算得不对。

输入输出

算法就是用来解决问题的,问题的来源就是输入,问题的结果就是输出。

算法极速入门——一文读懂,“算法”究竟是个啥?

再复杂的算法也是由一个个小算法组合成的

怎么设计一个算法程序呢

算法有三个要素——

数学模型输入输出方法算法步骤

算法极速入门——一文读懂,“算法”究竟是个啥?

 

所以说,怎么设计一个算法呢?

首先,先对要解决的问题建立一个数学模型,把原问题化为数学问题;

然后,将问题的“已知条件”化为“数据”输入到数学模型中;

再然后,通过对输入一步一步的转化/处理/计算,得到结果;

最后,把结果按照希望的形式,输出出来。

举个例子吧

比如我们要解决一个问题——班级里有30个同学,我们现在知道他们的姓名和考试分数,比如小红90分,小刚97分,小明60分等等,求班级里面哪位同学成绩最好?

算法极速入门——一文读懂,“算法”究竟是个啥?

谁的成绩最好呢?

那么我们按照上面的步骤来设计一个小算法吧。

把原问题转化为数学问题

求30个成绩值中的最大值及对应的姓名;

已知条件化为输入数据

依次输入30个名字和30个成绩值;(其中名字的数据类型为字符串,成绩值的数据类型为整数型,关于数据类型我们将在后面详细讲解)

分步计算

这是一个典型的求最大值的问题,方法很多,这里举一种方法:

3-1 取出第1个同学和第2个同学的姓名和成绩,比较大小,将那个较大的成绩值储存在一个位置,这个位置我们给他起个名字,就叫<当前最大成绩值>吧,再把这个较好的成绩对应的同学姓名存到另一个位置,就叫<当前最好成绩的同学姓名>;

3-2 这样,第1个同学和第2个同学成绩比较完成,得到了这2名同学中的成绩最好的同学,信息储存在:<当前最大成绩值>和<当前最好成绩的同学姓名>中;

3-3 下面就是重复性的工作了,把得到的<当前最大成绩值>和<当前最好成绩的同学姓名>与第3位同学进行比较,仍然是把较大的成绩值储存在<当前最大成绩值>里,把这个较好的成绩对应的同学姓名存到<当前最好成绩的同学姓名>里;

3-4 这个过程一直进行,直到把30个同学的信息都比较完,这时<当前最大成绩值>里存的值就是最好的成绩,<当前最好成绩的同学姓名>里存的值就是这位最厉害的同学的姓名。

输出

按照你想要的格式,将上面两个储存的值显示出来,就完成了!

借上面的例子有几点要说明一下

解决同一个问题,可能有各种各样的算法。不同的算法,可能执行速度不同,可能编写难易度不同,可能占用的资源不同,甚至可能计算准确度都不同;很多时候并没有最好的算法,只有在特定条件下最适合的算法

每一个算法都有适用的条件,条件变了,算法可能就用好用了。比如上面例子,如果这个班级中有2个同学的成绩刚好一样,那么按理说就应该输出两个姓名和成绩,上面的算法就需要改进一下了。

算法极速入门——一文读懂,“算法”究竟是个啥?

算法 —— 一个强逻辑体

能把问题具体化为一个或几个数学问题,问题就解决了一半。就如同学习和工作中一样,所谓解决问题的能力,有一半是分析问题的能力,能够将大问题分解成小问题,将抽象问题等价为具体问题。



Tags:算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
听起来高大上的“算法”,其实一点也不难学!本专栏用最简洁的语言和逻辑,脱离编程语言的束缚,在最短时间内,从算法概念/程序结构/数据结构/算法思想/应用方法这五个方面,跟您一起,轻...【详细内容】
2022-04-06  Tags: 算法  点击:(0)  评论:(0)  加入收藏
保护个人信息,护航数字经济发展给“算法应用”立规矩(网上中国)使用某个应用程序后,它就能“猜”到你喜欢什么,并且精准推送相关内容,滋生“信息茧房”、大数据“杀熟”等问题。...【详细内容】
2022-04-06  Tags: 算法  点击:(0)  评论:(0)  加入收藏
近年来,在材料科学、人工智能芯片等前沿领域,深度学习受到广泛的研究和应用。具体来说,深度学习通过学习样本数据的内在规律和表示层次实现机器像人一样具有分析和学习的能力,因...【详细内容】
2022-03-30  Tags: 算法  点击:(9)  评论:(0)  加入收藏
hash函数是根据关键字key计算出应该存储地址的位置,哈希函数把key转成哈希值来定位数据存储的位置,是基于哈希函数建立的一种查找表,Python 中的字典就是用哈希表来实现的。本...【详细内容】
2022-03-29  Tags: 算法  点击:(15)  评论:(0)  加入收藏
回归算法 一、理解线性回归模型 首先讲回归模型,回归模型研究的是因变量(目标)和自变量(预测器)之间的关系,因变量可以是连续也可以离散,如果是离散的就是分类问题。思考房价预测模...【详细内容】
2022-03-28  Tags: 算法  点击:(4)  评论:(0)  加入收藏
桶排序算法就是把数据平分到每一个桶中,然后对桶中的数据进行排序,再按桶的顺序依次倒出数据,桶排序算法很好理解。桶排序算法也是以空间换时间的算法。举例说明一下桶排序算法...【详细内容】
2022-03-24  Tags: 算法  点击:(16)  评论:(0)  加入收藏
递归三要素:1、明确递归终止条件;2、给出递归终止时的处理办法;3、提取重复的逻辑,缩小问题的规模。1、1+2+3+&hellip;+nimport java.util.Scanner; public class Recursion {...【详细内容】
2022-03-18  Tags: 算法  点击:(27)  评论:(0)  加入收藏
“我的”——“设置”——“通用设置”——“管理个性化内容推荐”——“个性化内容推荐”。...【详细内容】
2022-03-17  Tags: 算法  点击:(17)  评论:(0)  加入收藏
大数据的时代,几乎每个手机用户都遇到过被个性化算法“支配”的情况:点赞一个视频,APP会源源不断推送近似视频;搜索过一件商品,从此打开购物平台都是同类型商品;想抢个优惠券,还可...【详细内容】
2022-03-17  Tags: 算法  点击:(15)  评论:(0)  加入收藏
3月16日消息,据经济日报报道,据不完全统计,截至3月15日,抖音、今日头条、微信、淘宝、百度、大众点评、微博、小红书等App均已上线算法关闭键,允许用户在后台一键关闭“个性化推...【详细内容】
2022-03-17  Tags: 算法  点击:(29)  评论:(0)  加入收藏
▌简易百科推荐
听起来高大上的“算法”,其实一点也不难学!本专栏用最简洁的语言和逻辑,脱离编程语言的束缚,在最短时间内,从算法概念/程序结构/数据结构/算法思想/应用方法这五个方面,跟您一起,轻...【详细内容】
2022-04-06  科技千里眼  今日头条  Tags:算法   点击:(0)  评论:(0)  加入收藏
一、为什么讲策略模式策略模式,应该是工作中比较常用的设计模式,调用方自己选择用哪一种策略完成对数据的操作,也就是“一个类的行为或其算法可以在运行时更改”我个人的理解...【详细内容】
2022-03-30  大数据架构师  博客园  Tags:枚举策略   点击:(11)  评论:(0)  加入收藏
hash函数是根据关键字key计算出应该存储地址的位置,哈希函数把key转成哈希值来定位数据存储的位置,是基于哈希函数建立的一种查找表,Python 中的字典就是用哈希表来实现的。本...【详细内容】
2022-03-29  测试开发小记    Tags:算法   点击:(15)  评论:(0)  加入收藏
桶排序算法就是把数据平分到每一个桶中,然后对桶中的数据进行排序,再按桶的顺序依次倒出数据,桶排序算法很好理解。桶排序算法也是以空间换时间的算法。举例说明一下桶排序算法...【详细内容】
2022-03-24  理性职场说    Tags:桶排序   点击:(16)  评论:(0)  加入收藏
正则表达式(Regular expression)可用来检查文本中是否包含指定模式的字符串,通常是按行来处理(POSIX标准),因为.操作符通常不匹配换行符,如果要匹配多行怎么处理呢?本文介绍正则表达...【详细内容】
2022-03-22  测试开发小记    Tags:正则表达式   点击:(27)  评论:(0)  加入收藏
AVL(Adelson-Velsky and Landis Tree) 树是一种自平衡二叉树, 也是最早发明的一种自动平衡二叉树。原因是由于BST(二叉搜索树)在用有序列表不断插入时会退化成链表而大大影...【详细内容】
2022-03-15  程序驱动世界    Tags:AVL树   点击:(23)  评论:(0)  加入收藏
前言:本文章主要是讲解我个人在学习Java开发环境的排序算法时做的一些准备,以及个人的心得体会,汇集成本篇文章,作为自己对排序算法理解的总结与笔记。内容主要是关于十大经典排...【详细内容】
2022-03-04  IT界彭于晏  博客园  Tags:排序算法   点击:(30)  评论:(0)  加入收藏
作者:小伍哥来源:小伍哥聊风控 大家好,我是小伍哥,今天给大家分享的是一个基于密度的欺诈检测算法,思想非常牛逼,大家可以试试,先给出论文地址和代码论文地址:http://pengcui.thumed...【详细内容】
2022-03-03  CDA数据分析师    Tags:欺诈检测算法   点击:(26)  评论:(0)  加入收藏
正则表达式,十分古老而又强大。熟悉掌握并使用,可以在编程时节省很多时间和精力,开发效率得到极大的提升。比如下面这十个正则表达式,是日常前JS开发中经常用到的,且都验证过,可直...【详细内容】
2022-02-25  修丹道的程序猿    Tags:正则表达式   点击:(34)  评论:(0)  加入收藏
新的算法很难产生,2022 年可能也不例外。然而,仍有一些机器学习算法和 Python 库将在未来更受欢迎。这些算法之所以与众不同,是因为它们包含了一些在其它算法中并不普遍的优点...【详细内容】
2022-02-20  InfoQ    Tags:机器学习   点击:(11)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条