数组是一种基础而强大的数据结构,它允许你存储一系列相同类型的值。在编程中,数组的使用非常广泛,可以用来实现各种算法和数据处理任务。这里我将为你提供一个基本的数组编程教程,涵盖数组的基本概念、声明、初始化、访问、遍历以及一些常见操作。
1. 数组的基本概念
数组是一种线性数据结构,它允许你以索引(通常是整数)访问元素。数组中的每个元素可以通过计算偏移量来快速访问,这使得数组成为处理大量数据时的理想选择。
2. 数组的声明与初始化
静态数组
在大多数编程语言中,你可以在声明数组时指定数组的大小(即数组可以存储的元素数量)。
Dim 数组(99) As Long
从 0 开始到 99 可以保存 100个数据
Dim 数组(10 to 20) As Long
从 10 开始到 20 可以保存 11 个数据
动态数组
即数组的大小可以随着元素的增加或删除而自动调整。
Dim 数组() As Long
刚声明的数组是未初始化状态,然后需要使用数组时,随时改变大小,此时原来有数据将会全部清空
ReDim 数组(99)
要想保留原来数组的内容,需要
ReDim Preserve 数组(99)
让初始化的动态数组为未初始化状态
Erase 数组
数组初始化赋值
就是声明数组同时给数组赋值,都是静态数组,动态不可以。
如果没搞初始化赋值,数组的值,字符为空,数组为0
Dim 字符数组(4) As String={"11","22","33","44","55"}
Dim 数值数组(4) As Long = {11, 22, 33, 44, 55}
Dim 根据参数来定大小数组(...) As Long = {11, 22, 33, 44, 55,66}
3. 访问数组元素
通过索引来访问数组元素。索引通常是从0开始的。
dim aa as long = 数组(1)
数组(1) =aa
4. 遍历数组
遍历数组意味着按顺序访问数组中的每个元素。这通常通过循环来实现。
Dim 数组(99) As Long, i As Long
For i = 0 To 99
数组(i) = Rnd *100
Next
For i = 0 To 99
Print i, 数组(i)
Next
4. 检索数组大小
LBound 返回数组维度的下限
UBound 返回数组维度的上限
Dim 数组(10 To 20) As Long
Print LBound(数组),UBound(数组)
打印结果: 10,20
假如动态数组未初始化,返回 -1
Dim 数组() As Long
Print LBound(数组),UBound(数组)
打印结果: -1,-1
4. 遍历数组
4. 遍历数组
5. 数组的常见操作
- 插入元素:在数组中添加新元素可能需要移动其他元素以为新元素腾出空间,通常用于动态数组。
Dim 数组() As Long, i As Long, u As Long
ReDim 数组(100)
u=UBound(数组) '获取数组下标
ReDim Preserve 数组(u+1) '增加一个数组并保留原来数据
'假如在50索引插入数组
'腾出50索引空间
For i = u To 50 setp -1
Swap 数组(i),数组(i+1)
Next
数组(50) =999
- 删除元素:从数组中移除元素,并可能需要重新排列剩余元素。
Dim 数组() As Long, i As Long, u As Long, x as long
ReDim 数组(100)
'假如要删除50索引
x =50
u = UBound(数组) '获取数组下标
If x < 50 Then
For i = x To u -1
Swap 数组(i),数组(i+1)
Next
End If
If u = 0 Then
Erase 数组 '没数组了
Else
ReDim Preserve 数组(u-1) '删除一个数组并保留原来数据
End If
- 搜索元素:在数组中查找特定元素的索引或是否存在该元素。
Dim 数组(100) As Long, i As Long
For i = 0 To UBound(数组)
If 数组(i) = 99 Then
'找到数据,退出循环
Exit For
End If
Next
- 排序:将数组中的元素按照一定顺序排列。
数值类型排序
Dim 数组(100) As Long
QuickSortLong(数组(), LCase(数组), UBound(数组))
字符串类型排序
Dim 数组(100) As String
QuickSortStr(数组(), LCase(数组), UBound(数组))
其它类型排序,需要自己写算法了,反正不存在通用的排序
超范围使用数组
超过声明的数组范围,软件将会崩溃
Dim 数组(1) As Long
Print 数组(2) ******软件会崩溃*****
当你的软件发生崩溃时,大多数原因,就是数组超范围使用了。
评论一下?