算法基础:修订间差异

添加93字节 、​ 2021年6月29日 (星期二)
// Edit via InPageEdit
无编辑摘要
(// Edit via InPageEdit)
 
(未显示1个用户的7个中间版本)
第1行:
{{tex}}
众所周知,计算机是无生命的。
'''算法(Algorithm)'''是程序的根基。这篇文章简要介绍了啥是算法,以及作为一个coder必须知道的一些事。
 
=== 算法 ===
所以要是想让它做人类想让它做的事情的话,人类就不得不付出劳动。(悲)
 
众所周知,计算机是无生命的。所以要是想让它做人类想让它做的事情的话,人类就不得不付出劳动。(悲)
至于AI{{Heimu|人工智障}}啊,机器学习啊,他们的根基都离不开'''算法'''。
 
至于{{ruby|AI|{{Heimu|人工智障}}}}啊,机器学习啊,他们的根基都离不开'''算法'''。
 
那么算法是啥?
第14行 ⟶ 第17行:
 
=== 复杂度 ===
 
下面两种复杂度决定了一个代码的综合效率。(但作为一个程序员coder更关心的还是一个算法的代码复杂度东西很世俗所以没有这种东西(不是),但代码复杂度在有时间限制的算法竞赛中还是很重要的。
 
==== 时间复杂度 ====
第19行 ⟶ 第24行:
回到刚才打游戏的例子。有的游戏里面会给玩家搞一个排行榜,比如说刷副本,这个人刷了多长时间,那个人又刷了多长时间,从快到慢依次排下来,就是一张榜。当然了,打游戏的这个时长是可以熟能生巧来练的,但是算法的时间效率是你想出来之后就固定了的。
 
算法的时间效率,OIer一般称作'''时间复杂度'''。时间复杂度又分好几种类型,我们一般使用渐进上界复杂度,记为<math>O</math>(说白了就是算法用时的最坏情况,有些时候实际不需要运行这么长时间
 
那么这个时间复杂度怎么算呢?
第32行 ⟶ 第37行:
 
'''空间复杂度''',就是一个算法的空间效率。这取决于它占用你电脑内存的多少空间,通常也用<math>O</math>来表示。空间复杂度一般不是很重要,但是只要它重要了就会特别重要,能掌握算法命运的那种。
 
 
这两种复杂度决定了一个代码的综合效率,但作为一个程序员更关心的还是一个算法的代码复杂度。这东西很世俗所以没有这种东西(不是),但代码复杂度在有时间限制的算法竞赛中还是很重要的。
 
=== 语言和代码 ===
 
语言很重要,<s>但hsy不怎么懂</s>
 
市面上比较流行的语言大概就是C++,Java,Pascal,python等等。语言也分不同的类型,有面向对象的,有函数式的,有指令式的,相同点就是都是高级语言。高级语言就得编译成计算机能识别的机器语言,所以在编程之前得先学语言并且下载一个编译器。
 
以后讲算法的文章hsy都将使用C++作为示范,因为不会其他的。
 
市面上比较流行的语言大概就是C++,Java,Pascal,python、Java、Pascal以及Python等等。语言也分不同的类型,有面向对象的,有函数式的,有指令式的,相同点就是都是高级语言。高级语言就得编译成计算机能识别的机器语言,所以在编程之前得先学语言并且下载一个编译器。
至于代码,就是仁者见仁智者见智的东西。有的算法写成代码会有很多种不同的写法,甚至复杂度也会有微小的区别。码风(代码风格)就更是一个人一个样了。主要还是效率至上,其他方面自己喜欢即可。
 
以后讲算法的文章hsy都将使用C++作为示范,<s>因为不会其他的</s>
 
至于代码,就是仁者见仁智者见智的东西。有的算法写成代码会有很多种不同的写法,甚至复杂度也会有微小的区别。码风(代码风格)就更是一人一个样了。主要还是效率至上,其他方面自己喜欢即可。
大概就讲这么多。
 
[[分类:信息学]]
2,007

个编辑