数组及其应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.2.4 一维数组的应用 第五章 —— 数数据排序 组
冒泡法排序算法的流程图:
4.2.4 一维数组的应用 第五章 —— 数数据排序 组
冒泡法排序(升序)程Biblioteka Baidu:
For i = 1 To n - 1 For j = 1 To n-i If a(j) > a(j+1) Then t=a(j): a(j)=a(j+1):a(j+1)=t End if Next j Next i
引例:
A7=Val(InputBox(“Enter A7 Number”)) A8=Val(InputBox(“Enter A8 Number”)) A9=Val(InputBox(“Enter A9 Number”)) A10=Val(InputBox(“Enter A10 Number”)) S=A1+A2+A3+A4+A5+A6+A7+A8+A9+A10 Ave=S/10 IF A1>Ave Then Print A1 IF A2>Ave Then Print A2 IF A3>Ave Then Print A3 IF A4>Ave Then Print A4 ……….. ‘ 实际程序是不能这样写
×
4.如果省略As子句,则数组的类型为变体类型。 6.数组中各元素在内存占一片连续的存储空间。
A(0) A(1) A(2) …. A(n)
一维数组在内存中存放的顺序
4.2.2 一维数组元素的引用 第五章 数
使用形式: 数组名(下标)

其中:下标可以是整型变量、常量或表达式。
例如: 设有下面的数组定义: Dim A(10) As Integer ,B(10) As Integer 则下面的语句都是正确的。 A(1)=A(2)+B(1)+5 ' 取数组元素运算
4.3 二维数组及多维数组
4.3.2 二维数组的引用
引用形式: 数组名(下标1,下标2) 例如: a(1,2)=10 a(i+2,j)=a(2,3)*2 在程序中常常通过二重循环来操作使用二维数组元素。
4.3.3 二维数组的基本操作
1. 二维数组数据的输入 2. 求最大元素及其所在的行和列 3. 计算两矩阵相乘 4. 矩阵的转置
在例 4.1 中如果还要统计 0~9 , 10~19 , 20~29 , ….80~89 , 90~99分数段及100分的学生人。
则可另用数组bn来存各分数段的人数,并用bn(0)存0~9 分的人数,bn(1)存10~19分的人数,…bn(9)存90~99分的人 数,bn(10)存100分的人数。
4.2.4 一维数组的应用 数据排序 第五章 —— 数 组
输入10个数,输出它们的平均值 及大于平均值的那些数? 。
S=0: N=1 当 N<=10
输入 A S=S+A
N=N+1
Ave=S/10 打印 Ave
Dim N%, S!, A!, Ave! For N=1 to 10 A=Val(InputBox(“Enter A Number”)) S=S+A Next N Ave=S/10 Print Ave
4.2.3 一维数组的基本操作 第五章 数

3. 求数组中最大元素及所在下标 Dim Max As Integer, iMax As Integer Max = A(1): iMax = 1 For i = 2 To 10 If A(i) > Max Then Max = A(i) iMax = i End If Next i Print "A(" & iMax & ")="; A(iMax)
4.3 二维数组及多维数组
3. 计算两矩阵相乘(略) 4. 矩阵的转置
方阵的转置的程序代码如下: For i = 2 To M For j = 1 To I-1 Temp=a(i,j) a(i, j) = a(j, i) a(j, i)=Temp Next j Next i 设A是 M*N 的矩阵,要重新 定义一个 N*M 的二级数组 B , 将 A 转置得到 B 的程序代码 如下: For i = 1 To M For j = 1 To N b(j,i) = a(i,j) Next j Next i
4.3 二维数组及多维数组
1. 二维数组数据的输入
Const N=4, M=5, L=6 Dim a(1 to N,1 to M) As Integer, i%, j%,k% 1. 给二维数组a输入数据的程序段如下: For i=1 to 4 For j=1 to 5
A(i,j)=Val(InputBox("a("& I &"," & j & ")=?"))
例4.3 用随机函数产生50个10~100的随机整数,
并按由小到大的顺序打印出来。
演示
4.2.4 一维数组的应用——数据排序 2.冒泡法排序(升序)
算法 :(将相邻两个数比较,大数交换到后面) 1)第 1 趟:将每相邻两个数比较,大数交换到 后面,经 n-1 次两两相邻比较后,最大的数已交换 到最后一个位置。 演示 2)第 2 趟:将前n-1个数(最大的数已在最后)按 上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较, 在第j趟中要进行n-j次两两比较。
Dim 数组名([<下界>] to <上界>,[<下界> to ]<上界>) [As <数据类型>]
二维数组在内存的存放顺序是“先行后列”。例如数组 a的各元素在内存中的存放顺序是: a(0,0)→a(0,1)→a(0,2)→a(0,3)→a(1,0)→a(1,1)→a(1,2)→ a(1,3)→a(2,0)→(2,1)→a(2,2)→a(2,3)
4.2.3 一维数组的基本操作
4. 将数组元素倒置 For i =1 To 10\2 t=A(i) A(i)=A(10-i+1) A(10-i+1)=t Next I
(演示)
4.2.4 一维数组的应用
一、统计问题
例4.1例4.1 编程求某班60个学生某门课程考试的平均成绩及 高于平均成绩的学生人数。 例4.2
VB中数组的表示形式: A(1), A(10) X(1,1), X(2,10) Y(0,0,0), Y(1,2,5) ‘ 一维数组 ‘ 二维数组 ‘ 三维数组
4.1 概 述
Visual Basic中的数组分类: 按数组的大小(元素个数)是否可以改变来分为: 定长数组、动态(可变长)数组。 按元素的数据类型可分为:
2)第2遍:除第1 个数外,其余n-1个数中选最小的 数,与第2个数交换位置; (演示)
1 7
5
3
8
9
7 1
6
4
3)依次类推,选择了n-1次后,这个数列已按升 序排列。
4.2.4 一维数组的应用 数据排序 第五章—— 数 组
选择法排序算法的流程图:
4.2.4 一维数组的应用 第五章 —— 数数据排序 组
引例:
输入10个数,输出它们的平均值及大于平均值的 那些数。
如果使用:A1,A2,A3,A4,A5,A6,A7,A8,A9,A10 Dim N%, S!, Ave!, A1!, A2!….,A10! ‘ 实际程序是不能这样写 A1=Val(InputBox(“Enter A1 Number”)) A2=Val(InputBox(“Enter A2 Number”)) A3=Val(InputBox(“Enter A3 Number”)) A4=Val(InputBox(“Enter A4 Number”)) A5=Val(InputBox(“Enter A5 Number”)) A6=Val(InputBox(“Enter A6 Number”))
A(i)=B(i)
B(i+1)=A(i+2)
' 下标使用变量
' 下标使用表达式
4.2.3 一维数组的基本操作 第五章 数

1. 可通过循环给数组元素的初值 For i = 1 To 10 ‘ A数组的每个元素值为1 A(i)=1 Next i
2. 数组的输入 输入10个数,并存入到数组A中 For i = 1 To 10 A(i) =Val( InputBox(“输入A(” & i & “) 的值”) ) Next i
引例:
思考:
如果能使用Ai ( i=1,2,…..10 ) 的形式?
使用循环来写程序
VB中表示下标变量就是通过定义数组 来实现的。
第4章 数 组及其应用
4.1 概 述
数组的概念:数组并不是一种数据类型,而是 一组相同类型数据的集合。用一个统一的名字(数 组名)代表逻辑上相关的一批数据,每个元素用下 标变量来区分;下标变量代表元素在数组中的位置。
选择法排序(升序)的VB程序: For i = 1 To n - 1 p = i For j = i + 1 To n If a(p) > a(j) Then p = j Next j t = a(i): a(i) = a(p): a(p) = t Next i 思考:如果按降序排,程序如何修改?
4.2.4 一维数组的应用 数据排序 第五章 —— 数 组
二、排序问题 数据的排序就是将一批数据由小大到(升序)或由 大到小(降序)进行排列。常用的有选择法、冒泡法。 1.选择法排序
算法 (升序 )
( 设有n个数,存放在数组A(1)…..A(n)中) 1)第1遍:从中选出最小的数,与第 1个数交换 位置; (演示)
7
5
3
8
9
1
6
4
4.2.4 一维数组的应用 数据排序 第五章 —— 数 组
例:Dim a(1 to 10) As Integer
与上面声明等价形式: Dim a%(1 to 10)
4.2.1 一维数组的声明
说明:
1.数组名的命名规则与变量的命名相同。
2.数组的元素个数:上界-下界+1。
3.缺省 <下界 >为 0,若希望下标从 1开始,可在模块的通 用部分使用Option Base语句将设为1。其使用格式是:
Next j Next i
4.3 二维数组及多维数组
2. 求最大元素及其所在的行和列
用变量max存放最大值,row,col存放最大值所在行列号
Max = a(1, 1): row = 1: Col = 1 For i = 1 To N For j = 1 To M If a(i, j) > a(row, Col) Then Max = a(i, j) row = i Col = j End If Next j Next i Print "最大元素是"; Max Print "在第" & row & "行,"; "第" & Col & "列"
第4章
本章要求:
数组及其应用
(1)理解数组的用途和存放形式; (2)掌握一维数组和二维数组的定义及引用方法; (3)掌握动态数组的定义和使用; (4)能应用数组解决一些常见问题,如复杂统计、平均 值、排序和查找等。
重点:
数组定义及引用方法,与数组有关的一些常用算法
难点: 与数组有关的一些常用算法
引例:
4.2.4 一维数组的应用 第五章 —— 数数据排序 组
3、两种排序方法的比较
问题:两种排序方法那一种好?
结论:选择法排序比冒泡法排序算法优
4.3 二维数组及多维数组
4.3.1 二维数组的声明
声明格式如下:
其中的参数与一维数组完全相同。 例如:Dim a(2,3) As Single
1 4 7 2 5 8 3 6 9
数值型数组、字符串数组、逻辑数组、
日期型数组、变体数组等、对象数组。 按数组的维数可分为: 一维数组、二维数组、多维数组。
4.2 一维数组
4.2.1 一维数组的声明
一维数组形式: Dim 数组名([<下界>to]<上界>)[As <数据类型>] 或: Dim 数组名[<数据类型符>]([<下界>to]<上界>) ‘ 声明了a数组有10个元素 数组元数的数据类型 1是下标的下界 10是下标的上界
Option Base 0|1
例如: Option Base 1
‘ 后面的参数只能取 0 或 1
‘ 将数组声明中缺省<下界>下标设为 1
4.<下界>和<上界>不能使用变量,必须是常量,常量可
以是直接常量、符号常量,一般是整型常量。
4.2.1 一维数组的声明
Dim N As Integer N=Val(InputBox(“Enter N=?”)) Dim A(N) As Integer
相关文档
最新文档