算法与复杂度


前言

嚯嚯嚯,大家想我没有,好像有好几天没更新。
皮皮安,你是不是不学习了?
我没有,我不是,别乱说啊。虽然这几天是有点堕落了,但是我还是完成了mybatis持久层框架的学习。原本计划一个星期学完mybatis,在花一个星期用一用的。我从11号开始着手学的,到上周二我才学到动态sql,这不行,所以我就专心花时间学完了mybatis,后续我也会将自己的学习成果写出来。
鄙视
这不是回来了,嘿嘿嘿。
少废话,今天学了什么?
今天啊,今天没啥啊,就是算法的一些概念,大家主要靠理解啊。
这就水文字了?

在这里插入图片描述

今天要给大家说一说在算法中非常重要的一个概念------复杂度。


按照顺序不应该是链表了嘛?
别打岔,下次一定。

一、算法与复杂度?

1.什么是算法

在这里插入图片描述

算法?算法不就是算法嘛

ennnnn,这么说也没什么问题,但是总感觉不那么计算机呢。 在计算机届,外面将通过数据处理,数值运算,组合计算,模拟等操作解决问题的步骤称为算法

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)级的

总结

复杂度的高低决定了算法效率的高低,所以,在我们实际动手编程之前,一定要根据输入上限评估算法最坏的情况下的复杂度!!!
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 岁月 设计师:pinMode 返回首页