数据结构中的数组:是什么、数组操作[示例]
数据结构中的数组是什么?
数组是一种数据结构,用于存储多个具有相似数据类型的项。数组的项在相邻的内存位置上分配。这些内存位置称为该数组的元素。数组中元素的总数称为长度。
数组的详细信息是通过其位置访问的。此引用称为索引或下标。
数组的概念

上图说明了
- 数组是元素的容器。
- 元素具有特定的值和数据类型,例如“ABC”、“TRUE”或“FALSE”等。
- 每个元素都有自己的索引,用于访问该元素。
注意
- 元素存储在连续的内存位置。
- 索引总是小于数组项的总数。
- 在语法方面,声明为数组的任何变量都可以存储多个值。
- 几乎所有语言对数组的理解都相同,但声明和初始化数组的方式不同。
- 然而,在所有初始化中,三个部分将始终保持不变:数组名称、元素和元素的数据类型。
下图说明了在 Python 和 C++ 中声明数组的语法,以表明尽管不同语言的语法可能略有不同,但概念保持不变。
- 数组名称:方便引用元素集合
- 数据类型:用于类型检查和数据完整性
- 元素:数组中的数据值
为什么我们需要数组?
以下是数据结构中使用数组的一些原因
- 数组最适合将多个值存储在单个变量中
- 数组更擅长轻松快速地处理许多值
- 在数组中对值进行排序和搜索更容易
在 Python 中创建数组
在 Python 中,数组与列表不同;列表可以包含各种数据类型的数组项,而数组只能包含相同数据类型的项。
Python 有一个用于处理数组的单独模块,名为 array,您需要在开始处理它们之前导入它。
注意:数组必须包含实数,如整数和浮点数,不允许使用字符串。
以下代码说明了如何在 Python 中创建整数数组来存储账户余额
import array balance = array.array('i', [300,200,100]) print(balance)
在 Python 中声明数组的方法
您可以在初始化 Python 数组时使用以下语法进行声明。
arrayName = array.array(type code for data type, [array,items])
下图解释了语法。
- 标识符:指定一个名称,就像您通常为变量命名一样
- 模块:Python 有一个用于创建数组的特殊模块,名为“array”——在使用它之前必须导入它
- 方法:array 模块有一个用于初始化数组的方法。它接受两个参数:typecode(类型码)和 elements(元素)。
- 类型码:使用可用的类型码指定数据类型(参见下面的列表)
- 元素:在方括号内指定数组元素,例如 [130,450,103]
下表说明了支持的数据类型的可用类型码
类型码 | C 类型 | Python 类型 | 最小字节数 |
---|---|---|---|
‘c’ | char | 字符 | 1 |
‘B’ | 无符号字符 | int | 1 |
‘b’ | 有符号字符 | int | 1 |
‘u’ | Py_UNICODE | Unicode 字符 | 2 |
‘h’ | 有符号短整型 | int | 2 |
‘H’ | 无符号短整型 | int | 2 |
‘i’ | 有符号整型 | int | 2 |
‘I’ | 无符号整型 | long | 2 |
‘l’ | 有符号长整型 | int | 4 |
‘L’ | 无符号长整型 | long | 4 |
‘f’ | float | float | 4 |
‘d’ | double | float | 8 |
如何访问特定的数组值?
您可以使用索引访问任何数组项。
语法
arrayName[indexNum]
示例
balance[1]
下图说明了通过索引访问数组项的基本概念。
在这里,我们使用索引 1 访问了数组的第二个值。输出将是 200,也就是 balance 数组的第二个值。
import array balance = array.array('i', [300,200,100]) print(balance[1])
输出
200
数组操作
Python 的 array 模块有单独的函数来执行数组操作。这是一种破坏性的数组操作方法,意味着修改将保存在数组变量中。
插入
使用此操作,您可以将一个或多个项插入到数组的开头、结尾或任何给定索引处。此方法需要两个参数:index(索引)和 value(值)。
语法
arrayName.insert(index, value)
示例
让我们在数组的第二个项目之后添加一个新值。目前,我们的 balance 数组有三个项目:300、200 和 100。那么,值为 200 的第二个数组项的索引是多少?如果你说 1。
要在索引 1“之后”插入新值,您需要在 insert 方法中引用索引 2,如下所示
import array balance = array.array('i', [300,200,100]) balance.insert(2, 150)
现在,要验证新值是否已插入,请键入数组名称并按 Enter 键
import array balance = array.array('i', [300,200,100]) balance.insert(2, 150) print(balance)
输出
array('i', [300,200,150,100])
删除
通过此操作,您可以按值从数组中删除一个项目。此方法仅接受一个参数:值。运行此方法后,数组项将被重新排列,并且索引将被重新分配。
语法
arrayName.remove(value)
示例
让我们从数组中删除值为 150 的项。目前,我们的 balance 数组有四个项目:300、200、150 和 100。因此,要从数组中删除 150,您只需在方法参数中键入 150。很简单,对吧?
import array balance = array.array('i', [300,200,100]) balance.insert(2, 150) print(balance) balance.remove(150)
现在,要验证值是否已删除,请键入数组名称并按 Enter 键
import array balance = array.array('i', [300,200,100]) balance.insert(2, 150) print(balance) balance.remove(150) print(balance)
输出
array('i', [300,200,100])
搜索
使用此操作,您可以根据值在数组中搜索项。此方法只接受一个参数:value(值)。这是一种非破坏性方法,意味着它不会影响数组值。
语法
arrayName.index(value)
示例
让我们在数组中搜索值为 150 的项。目前,我们的 balance 数组有四个项目:300、200、150 和 100。因此,要在数组中搜索 150,您只需在方法参数中键入 150。这非常容易。此方法返回搜索值的索引。
import array balance = array.array('i', [300,200,150,100]) print(balance.index(150))
输出
2
UPDATE
此操作与 insert 方法非常相似,不同之处在于它将替换给定索引处已有的值。这意味着您将简单地在给定索引处分配一个新值。此方法需要两个参数:index(索引)和 value(值)。
语法
arrayName.udpate(index, value)
示例
假设我们的数组有四个项目:300、200、150 和 100,我们想用 145 替换 150。那么 150 的索引是多少?
如果你说是 2,那真是太棒了。
要替换索引为 2 的 150,您需要使用简单的赋值运算符来引用索引 2,如下所示
import array balance = array.array('i', [300,200,150,100]) balance[2] = 145
现在,要验证值是否已更新,请键入数组名称并按 Enter 键
import array balance = array.array('i', [300,200,150,100]) balance[2] = 145 print(balance)
输出
array('i', [300,200,145,100])
遍历
您可以使用循环遍历 python 数组,如下所示
import array balance = array.array('i', [300,200,100]) for x in balance: print(x)
输出
300 200 100
在 C++ 中创建数组
C++ 语言在创建数组方面比 Python 更灵活。您可以通过后面提到的三种方式在 C++ 中创建 C++ 数组。
以下代码说明了如何在 C++ 中创建整数数组来存储账户余额
#include <iostream> using namespace std; int main() { int balance[3] = { 300, 200, 100 }; for (int i = 0; i < 3; i++) { cout << "value of i: " << balance[i] << endl; } return 0; }
C++ 中声明数组的方法
您可以声明三种语法的数组。哪种适合您的程序,这个选择取决于您的程序需求。
按大小声明
语法
dataType arrayName[arraySize];
示例
int balance[3];
仅声明初始化数组项
语法
dataType arrayName[] = {array, items};
示例
int balance[] = { 300, 200, 100 };
按大小声明并初始化数组项
语法
dataType arrayName[arraySize] = {array, items};
示例
int balance[3] = { 300, 200, 100 };
如何访问特定的数组值?
您可以使用索引访问任何数组项。
语法
arrayName[indexNum]
示例
balance[1]
下图说明了通过索引访问数组项的基本概念。
在这里,我们使用索引 1 访问了数组的第二个值。输出将是 200,也就是 balance 数组的第二个值。
#include <iostream> using namespace std; int main() { int balance[3] = { 300, 200, 100 }; cout << balance[1]; return 0; }
输出
200
C++ 中的数组操作
与 Python 不同,在 C++ 中,您必须自己编写逻辑来执行 C++ 数组上的插入、删除、搜索、更新和遍历操作。
插入
插入操作的逻辑如下
- 遍历数组项
- 将它们移到更大的索引
- 在给定索引处添加一个新的数组项
在下面的示例中,balance 数组中有 5 个项目,我们想在值为 200 的后面添加一个新项目。这意味着我们必须将 200 之后的所有项目移到更大的索引,然后插入我们的新值 150。
#include <iostream> #include <stdio.h> main() { int pos = 2; int size = 4; int balance[] = {300,200,100,50,0}; printf("BEFORE INCREMENT: \n"); for(int i = 0; i<5; i++) { printf("%d\n",balance[i]); } /* FOR SHIFTING ITEMS TO A GREATER INDEX */ for(int i = size; i >= pos; i--) { balance[i+1]=balance[i]; } /* FOR INSERTING VALUE AT OUR DESIRED INDEX */ balance[pos] = 150; printf("AFTER INCREMENT: \n"); /* FOR PRINTING THE NEW ARRAY */ for(int i = 0; i<6; i++) { printf("%d\n",balance[i]); } }
输出
BEFORE INCREMENT 300 200 100 50 0 AFTERINCREMENT 300 200 150 100 50 0
Java 中的数组操作
让我们创建一个 Java 程序,在这个 Java 数组程序中,我们将从用户那里接受数组元素的大小和值。
import java.util.Scanner; public class AddElements { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("Enter the size of the array"); int n=sc.nextInt(); int arr[]=new int[n]; System.out.println("Enter Elements in the array"); for(int i=0;i<n;i++) { arr[i]=sc.nextInt(); } System.out.println("Elements in the array"); for(int j=0;j<n;j++) { System.out.print(arr[j]+" "); } } }
输出:-
Enter the size of the array 5 Enter Elements in the array 1 2 3 4 5 Elements in the array 1 2 3 4 5
修改数组中的元素:-
通过给定索引更新元素。
Java 程序演示如何修改数组中的元素
import java.util.Scanner; public class ModifyElement { public static void main(String[] args) { int arr[]={1,2,3,4,5}; int length= arr.length; Scanner sc=new Scanner(System.in); System.out.println("Array Elements Before modify"); for(int i=0;i<length;i++) { System.out.print(arr[i]+" "); } System.out.println("\nEnter the position where you want to change in an array"); int pos=sc.nextInt(); System.out.println("Enter the value"); int val=sc.nextInt(); arr[pos]=val; System.out.println("Array Elements After modify"); for(int j=0;j<length;j++) { System.out.print(arr[j]+" "); } } }
输出:-
Array Elements Before modify 1 2 3 4 5 Enter the position where you want to change in an array 2 Enter the value 8 Array Elements After modify 1 2 8 4 5
访问数组中的元素:-
打印所有数组元素。
Java 程序演示如何遍历数组
public class AccessElements { public static void main(String[] args) { int arr[]={1,2,3,4,5}; int length= arr.length; System.out.println("Array Elements are:-"); for(int i=0;i<length;i++) { System.out.print(arr[i]+" "); } } }
输出:-
Array Elements are:- 1 2 3 4 5
摘要
- 数组是用于存储具有相似数据类型的多个数据项的数据结构
- 标识符、数据类型、数组长度、元素和索引是数组的主要部分
- 使用索引处理数组元素的值
- 数组在保持数据类型不变方面具有出色的支持
- 在大多数语言中,数组是通过指定标识符、数据类型和包含的元素来创建的
- 数组最适合处理大量值,以及快速排序和搜索
- Python 具有用于执行基本数组操作(如插入、删除、搜索、更新和遍历)的模块和内置方法
- C++ 需要为基本的数组操作(如插入、删除、搜索、更新和遍历)定义程序