14天阅读挑战赛
努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~
你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解创作,参考如下:
1、什么叫算法?
简而言之就是求解问题的步骤,对特定问题求解步骤的一种描述。算法是智慧的结晶,学习它是去感受计算机编程技术的魅力,在理解掌握它的同时,整个过程都是一种愉悦的心情感受,而非枯燥乏味的一门课程。
在生活中,算法是无处不在的,算法在生活中最典型的一个“代号”就是说明书和教程。像游戏里的新手教程一样。要打败这个boss级怪物,首先要躲过他释放的龙卷风和泡泡,然后使用特定的键位组合释放技能击杀boss。像在刚开始接触王者荣耀的时候,你还是一个萌新,跟着ai进行基本的操作,怎么买装备,怎么操作,对应的技能对应什么伤害等等,第一个英雄就是亚瑟,装备界面又有详细介绍,什么物抗魔抗等等。其次就是去看一些主播的视频讲解操作,然后自己去练习。
汉诺塔算法的流程图如下:
2、数据结构和算法的关系?
数据结构+算法=程序
数据结构是程序的骨架,算法是程序的灵魂。
打个比方,今天是你女友生日,你打算请女友去看爱情音乐剧,到了戏院,抬头一看----《梁山伯》19:00开演。嗯,怎么会是这样?一问才知,今天演祝英台的演员生病了,所以梁山伯唱独角戏。于是你们打算去看爱情电影,到了电影院,一看海报《罗密欧》,是不是名字写错了,问了才知,原来演朱丽叶的演员因为嫌弃费用太低,中途退出演了。制片方考虑到已经开拍,于是就把电影名字定为《罗密欧》,主要将男主的心路历程。
3、算法的特性
-
有穷性:算法是由若干条指令组成的有穷序列,总是执行若干次后结束,不可能永不停止。
-
确定性:每条语句都有确定的含义,无歧义。
-
可行性:算法在当前环境条件下可以通过有限次运算来实现。
-
输入/输出:有零个或多个输入以及一个或多个输出。
4、算法设计的要求
-
正确性:算法的正确性是指算法至少 应该具有输入、输出和加工处理无歧义性,能正确反映问题的需求,能够得到问题的正确答案。
-
可读性:算法设计的另一目的是为了便于阅读、理解和交流.
-
健壮性:当输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果。
-
时间效率高和存储量底:时间效率指的是算法的执行时间。对于同一个问题,如果有多个算法能够解决,执行时间短的算法效率高,执行时间长的效率低。存储量需求指的是算法在执行过程中需要的最大存储空间,主要指算法程序运行时所占用的内存或外部硬盘存储空间。即用最短的时间,办最大的事。