什么是算法 Algorithm
在数学领域中,算法是用于解决某一类问题的公式和思想。高斯算法,即等差数列求和算法,就是其中的一个简单示例。
高斯算法示例: (1 + 10000) * 10000 / 2 = 50005000
而在计算机领域, 它的本质是一系列程序指令, 用于解决特定的运算和逻辑问题。
算法有简单的,也有复杂的
比如,求一组数中的最大值 Math.max(...[1, 2, 3]) 。复杂的算法,如找出从一个城市一另一个城市的最短路线。
算法有高效的,也有拙劣的 上面所说的高斯算法就是一种比较高效的算法, 它利用等差数列的规律, 四两拨千斤,省时又省力。但如果按部就班地一个数一个数地进行累加,就是一种低效的算法了。
数据结构 data structure
数据结构是数据的组织、管理和存储格式,其使用目的是为了高效地访问和修改数据。数据结构主要有:
-
线性结构。最简单的数据结构,包括数组、链表、栈、队列、哈希表;
-
树。相对线性较为复杂,如二叉树、二叉堆等;
-
图。它是更为复杂的数据结构,因为在图中会呈现多对多的关系;
-
其它。它们大多是由基本数据结构变形而来,用于解决某些特定问题,如跳表、哈希链表、位图等;
在解决问题时,不同的算法会选用不同的数据结构。
如何衡量一个算法的好坏
衡量算法好坏有很多标准, 其中最重要的两大标准是算法的时间复杂度和空间复杂度。
时间复杂度
基本操作执行次数
- 线性
- 对数
- 常量
- 多项式
渐进时间的复杂度
空间复杂度