当前位置: 首页 > news >正文

算法的意义、如何学习算法和算法的复杂度

14天阅读挑战赛
努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!记录下那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~

🥲 🥸 🤌 🫀 🫁 🥷  🐻‍❄️🦤 🪶 🦭 🪲 🪳 🪰 🪱 🪴 🫐 🫒 🫑 🫓 🫔 🫕 🦤 🪶 🦭 🪲 🪳 🪰 🪱 🐻‍❄️ 🫐 🫒 🫑 🫓 🫔 🫕

 ♔博主昵称:�欢快↑㎡

🕍博客主页:�欢快↑㎡的博客_CSDN博客-学习注意点杂记,BUG集,安装教程领域博主

🥗感谢点赞🤞🏻评论

⚇很方便的在线编辑器:Lightly

相信吧!🤜🏻我们很优秀,还可以更加优秀,加油!🌼让我们一起在写作中记录巩固学习吧!


为什么要学习算法

不乏有一些算法爱好者


如何学习算法

趣味算法的作者小玉老师告诉我们,学习算法,要先去了解算法,等对算法有了一定的熟悉度,我们再去实践,出错的效率会更加少,反之,对于初学者来说,出错多了就容易打击自信心。

了解算法可以通过书籍或者视频。

然后可以刷题(想要在算法方面比较厉害,可以做一个两年的规划)

刷题有很多网站,诸如力扣、牛客网等(参加蓝桥杯比赛也是不错的,会有在线的编程练习)

也可以参加比赛,学生和上班族都可以参加相应的比赛


算法知识点

算法的特性、算法的复杂度


算法的特性

  • 有穷性
  • 可行性
  • 确定性
  • 输入和输出

好的算法的特性

  • 正确性
  • 易读性
  • 健壮性
  • 高效性
  • 低存储性

其中低存储是算法所需要的存储空间大小(被称为空间复杂度)

算法的复杂度分类

  • 时间复杂度
  • 空间复杂度

算法例题

写一个算法求出以下序列的和

解题思路一

我们可以先写一个-1的n次方的方法(pow方法),然后用for循环一直求和,如图:

 

解题思路二

如图所示,我们将其两两组合,其和为0,我们只需要判断n是奇数还是偶数,是偶数则和为0,奇数则和为-1

代码如下

对比

由此可见解题思路一的算法会被循环执行n次(算法复杂度为O(n)),二解题思路二的算法只会被执行1次(一般来说执行一次效率也会越高)(算法复杂度为O(1))

算法复杂度效率比较

相关文章:

  • 分页PageHelper、PageInfo
  • JavaWeb中的Session和Cookie
  • 987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果
  • 厦门网上在线教育系统,线下老师怎么转型到线上网上授课?
  • Java Excel操作
  • c++ libtorch使用cmake建立
  • IPD(集成产品开发)—核心思想
  • 【vue+element ui】大屏自适应中el-select下拉内容在低分辨率下显示不全问题解决
  • mac m3安装nvm安装说明;mac安装xbrew
  • ctfshow——反序列化
  • 蓝桥杯-答疑
  • 历史新知网:寄快递寄个电脑显示器要多少钱?
  • 由浅到深带你详谈Java实现数组扩容的三种方式【建议收藏】
  • 【ML on Kubernetes】第 1 章:机器学习的挑战
  • 技巧分享-电脑版微信如何登录多个账号
  • 精品微信小程序springboot居家养老服务+后台管理前后分离
  • GBase 8c 系统表之DB4AI.SNAPSHOT
  • 高频故障-文件扩展名消失(windows)
  • 冲突域与广播域(详解 + 区别)
  • 国庆征文获奖名单公布
  • java毕业设计大学生创新创业项目管理Mybatis+系统+数据库+调试部署
  • Mysql在可重复读事务隔离级别下怎么解决幻读的
  • 【数据结构Java版】链表之单链表的实现
  • C++的RAII思想以及在智能指针上的应用
  • #include <iostream> 和#include <iostream.h>
  • 【硬件开源电路】STM32G070RBT6开发板
  • 登录页面案例
  • Hudi源码|bootstrap源码分析总结(写Hudi)
  • JavaEE——网络通信基础
  • Odoo | 页面视图的跳转逻辑
  • tf.name_scope
  • 【让你从0到1学会c语言】程序环境和预处理指令