Menu
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

DSA 数组


数组

数组是一种用于存储多个元素的数据结构。

许多算法都使用数组。

例如,可以使用算法来遍历数组以找到最小值,如下面的动画所示

速度

{{ msgDone }}

最小值: {{ minVal }}

在 Python 中,可以像这样创建数组

my_array = [7, 12, 9, 4, 11]

注意: 上面的 Python 代码实际上生成了 Python 的“列表”数据类型,但在本教程的范围内,“列表”数据类型可以与数组以相同的方式使用。有关 Python 列表的更多信息,请参见此处

数组是索引的,这意味着数组中的每个元素都有一个索引,一个表示元素在数组中的位置的数字。本教程中的编程语言(Python、Java 和 C)对数组使用基于零的索引,这意味着数组中的第一个元素可以在索引 0 处访问。

在 Python 中,此代码使用索引 0 将第一个数组元素(值 7)写入控制台

示例

Python

my_array = [7, 12, 9, 4, 11]
print( my_array[0] )
运行示例 »

算法:查找数组中的最小值

让我们使用数组数据结构创建第一个算法。

以下是查找数组中最小值的算法。

工作原理

  1. 逐个遍历数组中的值。
  2. 检查当前值是否是迄今为止的最小值,如果是,则将其存储起来。
  3. 查看完所有值后,存储的值将是数组中所有值的最小值。

尝试下面的模拟以查看查找最小值的算法是如何工作的(动画与本页面顶部的动画相同)

速度

{{ msgDone }}

最小值: {{ minVal }}

下一个模拟也与上面的模拟一样在数组中查找最小值,但在这里我们可以看到数组中的数字是如何被检查以找到最小值的

{{ msgDone }}
[
{{ x.dieNmbr }}
]

实现

在使用实际编程语言实现算法之前,通常明智的做法是首先将算法写成一个逐步过程。

如果你可以用介于人类语言和编程语言之间的语言来写下算法,那么算法在后面的实现中将更容易,因为我们避免了淹没在编程语言语法的所有细节中。

  1. 创建一个变量“minVal”并将其设置为等于数组的第一个值。
  2. 遍历数组中的每个元素。
  3. 如果当前元素的值小于“minVal”,则将“minVal”更新为该值。
  4. 查看完数组中的所有元素后,“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
运行示例 »

算法时间复杂度

Run Time

在探索算法时,我们经常会查看算法相对于数据集大小的运行时间。

在上面的示例中,算法需要运行的时间与数据集的大小成正比或线性。这是因为算法必须访问每个数组元素一次才能找到最小值。循环必须运行 5 次,因为数组中有 5 个值。如果数组有 1000 个值,循环将必须运行 1000 次。

尝试下面的模拟以查看找到最小值所需的比较操作次数与数组大小之间的关系。

参见此页面以更深入地了解时间复杂度是什么。

本教程中的每个算法都将与其时间复杂度一起展示。

{{ this.userX }}

操作: {{ operations }}

 

DSA 练习

通过练习测试自己

练习

我们如何从下面的数组中打印值“7”?

my_array = [7, 12, 9, 4, 11]
print(my_array[])

开始练习



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.