[Java 基础]算法
什么是算法
程序 = 数据结构 + 算法
算法(Algorithm)就是解决问题的步骤,就像做菜的食谱一样,告诉计算机一步一步如何完成任务。
例如:
- 排序算法:把一堆数字从小到大排列
- 搜索算法:在一堆数据里快速的找到某个值
算法的特征:
- 有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止
- 确切性:算法的每一步骤必须有确切的定义
- 输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件
- 输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的
- 可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)
算法的性能评价
一个算法的优劣往往通过算法复杂度来衡量,算法复杂度包括时间复杂度和空间复杂度两个方面。其作用:时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。
演示
可以在这个网站查看常用排序算法的直观演示:
https://visualgo.net/en/sorting
算法的西天取经之路:
https://leetcode.cn/
https://www.nowcoder.com/