DSA 数组
数组
数组是一种用于存储多个元素的数据结构。
许多算法都使用数组。
例如,可以使用算法来遍历数组以找到最小值,如下面的动画所示
速度
{{ msgDone }}最小值: {{ minVal }}
在 Python 中,可以像这样创建数组
my_array = [7, 12, 9, 4, 11]
注意: 上面的 Python 代码实际上生成了 Python 的“列表”数据类型,但在本教程的范围内,“列表”数据类型可以与数组以相同的方式使用。有关 Python 列表的更多信息,请参见此处。
数组是索引的,这意味着数组中的每个元素都有一个索引,一个表示元素在数组中的位置的数字。本教程中的编程语言(Python、Java 和 C)对数组使用基于零的索引,这意味着数组中的第一个元素可以在索引 0 处访问。
在 Python 中,此代码使用索引 0 将第一个数组元素(值 7)写入控制台
算法:查找数组中的最小值
让我们使用数组数据结构创建第一个算法。
以下是查找数组中最小值的算法。
工作原理
- 逐个遍历数组中的值。
- 检查当前值是否是迄今为止的最小值,如果是,则将其存储起来。
- 查看完所有值后,存储的值将是数组中所有值的最小值。
尝试下面的模拟以查看查找最小值的算法是如何工作的(动画与本页面顶部的动画相同)
速度
{{ msgDone }}最小值: {{ minVal }}
下一个模拟也与上面的模拟一样在数组中查找最小值,但在这里我们可以看到数组中的数字是如何被检查以找到最小值的
实现
在使用实际编程语言实现算法之前,通常明智的做法是首先将算法写成一个逐步过程。
如果你可以用介于人类语言和编程语言之间的语言来写下算法,那么算法在后面的实现中将更容易,因为我们避免了淹没在编程语言语法的所有细节中。
- 创建一个变量“minVal”并将其设置为等于数组的第一个值。
- 遍历数组中的每个元素。
- 如果当前元素的值小于“minVal”,则将“minVal”更新为该值。
- 查看完数组中的所有元素后,“minVal”变量现在包含最小值。
你也可以用更像编程语言的方式写下算法,比如这样
变量“minVal” = 数组[0]
对于数组中的每个元素
如果当前元素 < minVal
minVal = 当前元素
注意: 我们上面写的两个算法的逐步描述可以被称为“伪代码”。伪代码是对程序执行的操作的描述,使用介于人类语言和编程语言之间的语言。
写完算法后,在特定的编程语言中实现算法就容易多了
示例
Python
my_array = [7, 12, 9, 4, 11]
minVal = my_array[0] # Step 1
for i in my_array: # Step 2
if i < minVal: # Step 3
minVal = i
print('Lowest value: ',minVal) # Step 4
运行示例 »
算法时间复杂度
在探索算法时,我们经常会查看算法相对于数据集大小的运行时间。
在上面的示例中,算法需要运行的时间与数据集的大小成正比或线性。这是因为算法必须访问每个数组元素一次才能找到最小值。循环必须运行 5 次,因为数组中有 5 个值。如果数组有 1000 个值,循环将必须运行 1000 次。
尝试下面的模拟以查看找到最小值所需的比较操作次数与数组大小之间的关系。
参见此页面以更深入地了解时间复杂度是什么。
本教程中的每个算法都将与其时间复杂度一起展示。
{{ this.userX }}
操作: {{ operations }}