前言
嚯嚯嚯,大家想我没有,好像有好几天没更新。皮皮安,你是不是不学习了?
我没有,我不是,别乱说啊。虽然这几天是有点堕落了,但是我还是完成了mybatis持久层框架的学习。原本计划一个星期学完mybatis,在花一个星期用一用的。我从11号开始着手学的,到上周二我才学到动态sql,这不行,所以我就专心花时间学完了mybatis,后续我也会将自己的学习成果写出来。
鄙视
这不是回来了,嘿嘿嘿。
少废话,今天学了什么?
今天啊,今天没啥啊,就是算法的一些概念,大家主要靠理解啊。
这就水文字了?
今天要给大家说一说在算法中非常重要的一个概念------复杂度。
按照顺序不应该是链表了嘛?
别打岔,下次一定。
一、算法与复杂度?
1.什么是算法
算法?算法不就是算法嘛
2.给出问题(不给代码的哦)
给出10个数据,取出最大的三个数大家别激动,别激动,我知道简单,先关掉你们的编辑器,这是我给大家的三个算法。
算法一:搜索3次
1.将所有数存入到一个数组中
2.找出数组中最大的那数
3.除去2中选定的数,找出其余9个中最大的数
4.找出剩下8个中最大的数
算法二:先排序,在输出
1.将所有数存入到一个数组中
2.将数组降序排列
3.按照顺序输出数组前3个数
算法三:统计法(桶排序)
自己学一下(手动狗头)
二、复杂度(算法效率的保证)
1.复杂度的概念
时间复杂度(Time Complexity) 评估执行程序所需要的时间。可以估算出程序对计算机处理的使用程度
不过,在绝大数情况下,时间复杂度更容易出问题,所以复杂度一边☞时间复杂度空间复杂度(Space Complexity) 评估执行程序所需要的存储空间。可以估算出程序对计算机内存的使用程度
2.大O表示法
大O表示法是一种评估效率的标尺。一般情况下,我们会用像O(n),O(n^2)的形式表示算法的效率。
n为问题输入的大小。O(g(n))代表该算法复杂度与g(n)成正比,我常说:这个算法是g(n)级的