什么是算法?

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

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

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

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

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

image.png

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

image.png

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

image.png

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

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

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

image.png

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

相关文章
|
机器学习/深度学习
【机器学习】误差分析
【1月更文挑战第23天】【机器学习】误差分析
|
4月前
|
数据采集 SQL 搜索推荐
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
OneData是阿里巴巴内部实现数据整合与管理的方法体系与工具,旨在解决指标混乱、数据孤岛等问题。通过规范定义、模型设计与工具平台三层架构,实现数据标准化与高效开发,提升数据质量与应用效率。
大数据之路:阿里巴巴大数据实践——OneData数据中台体系
|
计算机视觉
数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
1469 0
数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
|
存储 安全 Java
商汤的API如何进行鉴权?
商汤的API如何进行鉴权?
322 2
|
存储 机器学习/深度学习 搜索推荐
去中心化的模型训练
去中心化的模型训练(Decentralized Model Training)是一种不依赖单一中心服务器或数据存储中心,而是在多个节点(如设备或数据拥有者)上进行联合训练的方法。这种训练模式可以更好地保护数据隐私、降低数据传输成本,并提升模型的鲁棒性和可扩展性。随着数据安全和隐私保护需求的提升,去中心化训练在深度学习和人工智能应用中的重要性逐渐增加。
435 4
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
325 7
|
JavaScript 前端开发 Java
通过JUnit5访问Java静态、私有、保护变量和方法
在《通过Gtest访问C++静态、私有、保护变量和方法》一文中介绍了如何通过Gtest访问C++静态、私有、保护变量和方法,本文介绍如何通过Junit5访问Java静态、私有、保护变量和方法。
270 0
|
安全 Java API
Java一分钟之-GraphQL:查询语言与API设计
【6月更文挑战第11天】GraphQL,一种革命性的查询语言,正在改变Web开发中的API构建和使用方式。它允许客户端按需请求数据,减少冗余,提升性能。本文概述了GraphQL的核心理念,如声明式查询、强类型和统一入口,并讨论了Java开发者常遇问题:过度查询、Schema设计和安全性。解决方案包括使用Dataloader、优化Schema和实现授权机制。通过理解原理、关注性能、重视安全和持续实践,开发者能更好地利用GraphQL构建高效API。
672 2
|
传感器 Windows
(3)将固件加载到已有ArduPilot固件的主板上
(3)将固件加载到已有ArduPilot固件的主板上
250 2
|
数据采集 监控 搜索推荐
分享66个Python管理系统源代码总有一个是你想要的
分享66个Python管理系统源代码总有一个是你想要的
329 1