




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 1第第6章章 数组及其应用数组及其应用 本章主要任务:本章主要任务: (1) 明确数组的用途,即什么问题应该考虑应明确数组的用途,即什么问题应该考虑应用数组进行求解。用数组进行求解。 (2) 掌握一维数组和二维数组的定义及引用方掌握一维数组和二维数组的定义及引用方法。法。 (3) 掌握动态数组的使用方法。掌握动态数组的使用方法。 (4) 掌握控件数组的建立与应用方法。掌握控件数组的建立与应用方法。 (5)掌握数组
2、的基本算法。)掌握数组的基本算法。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 21数组不是一种数据类型数组不是一种数据类型数组有点类似于数学上数组有点类似于数学上“集合集合”的概念,其作用就是存放一的概念,其作用就是存放一批性质相同的数据(称之为批性质相同的数据(称之为数组元素数组元素)。)。 2数组是一组相同类型变量的有序集合数组是一组相同类型变量的有序集合VB通过通过下标下标来给数组元素编号,数组名代表内存中的一组来给数组元素编号,数组名代表内存中的
3、一组数据,下标与数组名相结合可以实现对具体元素的访问数据,下标与数组名相结合可以实现对具体元素的访问 3数组在内存中的存放形式数组在内存中的存放形式 从本质上讲,定义数组就是在内存中分配一块连续的存储区从本质上讲,定义数组就是在内存中分配一块连续的存储区域,数组元素按照一定次序在这块区域中连续存放。域,数组元素按照一定次序在这块区域中连续存放。数组存储空间数组存储空间=元素个数元素个数该类型数据占用字节数该类型数据占用字节数 6.1 6.1 数组的基本概念数组的基本概念 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net
4、目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 31 1定义:定义:Dim Dim 数组名数组名( (下标下标)As )As 类型类型 说明:说明:(1)数组名的命名规则与变量的命名规则相同。)数组名的命名规则与变量的命名规则相同。(2)下标的形式为:)下标的形式为:下界下界 To 上界上界下界与上界必须为常量,不可以是表达式或变量。下界与上界必须为常量,不可以是表达式或变量。下界可以省略,其缺省值默认为下界可以省略,其缺省值默认为0 0,可在模块的通用声,可在模块的通用声明部分使用明部分使用Option Base 1Option Base 1语句,将默认缺省值设置为语句,将默认缺
5、省值设置为1 1。元素个数元素个数= =上界上界- -下界下界+1+1 (3 3)类型可以为)类型可以为VBVB标准数据类型,也可以为用户自定义数标准数据类型,也可以为用户自定义数据类型。据类型。 6.2 6.2 一维一维数组数组6.2.1一维数组的定义及引用一维数组的定义及引用 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 42引用:引用:数组名数组名(下标下标) 一维数组各元素在内存中按照下标递增的顺序连续存放一维数组各元素在内存中按照下标递增的顺序连续
6、存放 下标可以为整型常量、变量或表达式。下标可以为整型常量、变量或表达式。 引用时下标取值不能超出范围(下界引用时下标取值不能超出范围(下界下标下标上界),否则将出现上界),否则将出现“下标越界下标越界”错误。错误。 84108数组元素数组元素a(1) a(2) a(3) a(10)a3 3赋值赋值 与变量相同,数组定义完毕后,系统会自动为每个元素赋初值。在与变量相同,数组定义完毕后,系统会自动为每个元素赋初值。在程序中,可通过程序中,可通过循环循环给数组元素赋值,例如:给数组元素赋值,例如:For i=1 To 10 a(i)=Val(InputBox(“请输入一个整数请输入一个整数”)Ne
7、xt I6.2 一维数组一维数组浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 5例例6- 16- 1 统计某班(假设有统计某班(假设有3030人)程序设计课程考试的平均成绩,人)程序设计课程考试的平均成绩,并输出高于平均分的成绩。并输出高于平均分的成绩。Private Sub Form_Click() Const NUM = 30定义符号常量代表学生人数定义符号常量代表学生人数 Dim a(1 To NUM) As Integer, sum%, ave!,
8、i%, n% sum = 0初始化求和变量初始化求和变量 For i = 1 To NUM输入学生成绩并计算总成绩输入学生成绩并计算总成绩 a(i) = Val(InputBox(请输入第请输入第 & i & 个学生的成绩个学生的成绩) sum = sum + a(i) Next i ave = sum / NUM求平均成绩求平均成绩 Print 平均成绩:平均成绩:; ave For i = 1 To NUM输出高于平均分的成绩输出高于平均分的成绩 If a(i) ave Then Print a(i); n = n + 1 If n Mod 5 = 0 Then Print
9、 End If Next i End Sub 6.2 6.2 一维一维数组数组浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 6 例例6-26-2 随机产生随机产生N N个大写字母,然后将第一个字母与最后一个个大写字母,然后将第一个字母与最后一个字母交换位置、第二个字母与倒数第二个字母交换位置、依次类字母交换位置、第二个字母与倒数第二个字母交换位置、依次类推,输出最后的结果。推,输出最后的结果。分析分析:首先找出交换的规律,即首先找出交换的规律,即第第i i个
10、和第个和第N-i+1N-i+1个字母交换个字母交换。然后判断交换的次数为然后判断交换的次数为N2N2 a(1) a(2) a(3) a(N-2)a(N-1)a(N)6.2 6.2 一维一维数组数组浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 7Private Sub Form_Click() Const N = 10 Dim a(1 To N) As String * 1, i As Integer,t As Integer For i = 1 To N a
11、(i) = Chr(Int(Rnd * 25) + Asc(A)随机产生大写字母随机产生大写字母 Print a(i); Next i For i = 1 To N 2对称字母进行交换对称字母进行交换 t = a(i): a(i) = a(N - i + 1): a(N - i + 1) = t Next i Print For i = 1 To N Print a(i); Next iEnd Sub 6.2 一维数组一维数组浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本
12、章小结 作业 86.3 6.3 二维二维数组数组6.3.1 二维数组的定义及引用二维数组的定义及引用 1 1定义定义 :Dim Dim 数组名数组名( (下标下标1 1, ,下标下标2 2) )As As 类型类型 二维数组的元素个数可以通过二维数组的元素个数可以通过(上界(上界1-1-下界下界1+11+1)(上界(上界2-2-下界下界2+12+1)计算。计算。 例如:例如: Dim x(1 To 2,1 To 3)As IntegerDim x(1 To 2,1 To 3)As Integer 定义了一个包含定义了一个包含6 6个元素的二维整型数组个元素的二维整型数组x x。 2引用:引用:
13、数组名数组名(下标下标1,下标下标2) 习惯上称二维数组第一维下标为习惯上称二维数组第一维下标为行下标行下标,第二维下标为,第二维下标为列下标列下标。 可以把二维数组看作一张可以把二维数组看作一张二维表二维表,各元素在内存中按照,各元素在内存中按照“先行先行后列后列”的顺序连续存放的顺序连续存放 841082数组元素数组元素x(1,1) x(1,2) x(1,3)x8x(2,1) x(2,2) x(2,3)浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 9Fo
14、r i=1 To 2输出输出For j=1 To 3Print x(i,j);Next jPrintNext I For i=1 To 2输入输入 For j=1 To 3x(i,j)=Int(Rnd*10) Next jNext i 3赋值赋值在程序中经常使用在程序中经常使用二重循环二重循环对二维数组中元素进行输入和输出对二维数组中元素进行输入和输出 一般而言,外循环控制行下标的变化,内循环控制列下标的变一般而言,外循环控制行下标的变化,内循环控制列下标的变化。化。 例例6-36-3 编程输出某班(假设有编程输出某班(假设有3030人)期末考试(假设共有人)期末考试(假设共有5 5门课程门课
15、程考试)总成绩最高的学生的各门课程成绩。考试)总成绩最高的学生的各门课程成绩。分析分析:一共需要处理:一共需要处理30306 6个数据(包括一个总成绩),可以个数据(包括一个总成绩),可以定义一个二维数组用来存放这些数据。查找最高总成绩时,先定义一个二维数组用来存放这些数据。查找最高总成绩时,先假设第一个学生的总成绩最高,然后再拿其他学生的成绩依次假设第一个学生的总成绩最高,然后再拿其他学生的成绩依次比较,最终得到最高的总成绩。比较,最终得到最高的总成绩。 6.3 二维数组二维数组浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goi
16、t.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 106.3.2 多维数组的定义及引用多维数组的定义及引用 多维数组的定义形式多维数组的定义形式Dim 数组名数组名(下标下标1,下标下标2)As 类型类型多维数组的引用形式多维数组的引用形式数组名数组名(下标下标1,下标下标2)多维数组的使用方法多维数组的使用方法一般通过一般通过多重循环多重循环进行处理,其中每一重循环的循环变量进行处理,其中每一重循环的循环变量变化范围对应一个下标的变化范围。变化范围对应一个下标的变化范围。 6.3 6.3 二维二维数组数组浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教
17、学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 116.4 动态数组动态数组 6.4.1 动态数组的定义及引用动态数组的定义及引用 1 1定义定义 :Dim Dim 数组名数组名()As ()As 类型类型 动态数组在定义时并未确定数组大小(省略了下标说明,动态数组在定义时并未确定数组大小(省略了下标说明,但是但是括号并不能省略括号并不能省略 ) 2引用引用 在程序中使用动态数组之前,必须指明数组的大小在程序中使用动态数组之前,必须指明数组的大小 ReDim 数组名数组名(下标下标) 下标说明可以是常量,也可以是下标说明可以是
18、常量,也可以是有确定值的数值型变量有确定值的数值型变量。 可以多次使用可以多次使用ReDim语句来改变数组元素个数和维数,语句来改变数组元素个数和维数,但不能使用但不能使用ReDim语句改变数组的类型。语句改变数组的类型。 可通过可通过Preserve参数保留数组中原来的数据,但使用参数保留数组中原来的数据,但使用Preserve参数后就只能改变最后一维的大小,不能改变数参数后就只能改变最后一维的大小,不能改变数组的维数组的维数 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5
19、 本章小结 作业 126.4 动态数组动态数组 例如:例如:Dim c() As Integer定义动态数组定义动态数组ReDim c(1 To 10)指明数组大小指明数组大小ReDim c(3, 4)改变数组元素个数和维数改变数组元素个数和维数ReDim Preserve c(3, 5)在保留原来数据的基础上,增加一列在保留原来数据的基础上,增加一列6.4.2 数组操作的相关函数数组操作的相关函数 1 1ArrayArray函数函数 功能:功能:给一个给一个VariantVariant类型动态数组赋值,同时确定数组大小类型动态数组赋值,同时确定数组大小 使用使用ArrayArray函数给动态
20、数组赋值后,该数组被确定为一维数组,函数给动态数组赋值后,该数组被确定为一维数组,其下标下界由其下标下界由Option BaseOption Base语句决定,下标上界由参数个数决定语句决定,下标上界由参数个数决定2 2LboundLbound函数和函数和UboundUbound函数函数 功能:功能:帮助用户决定数组每一维下标的变化范围,帮助用户决定数组每一维下标的变化范围,LboundLbound函数函数返回下界,返回下界,UboundUbound函数返回上界函数返回上界 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.N
21、et目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 136.4 动态数组动态数组 3 3SplitSplit函数和函数和JoinJoin函数函数 使用使用SplitSplit函数可以从一个字符串中,以指定字符为分隔符,函数可以从一个字符串中,以指定字符为分隔符,分离出若干个子字符串,并保存在一个下标从分离出若干个子字符串,并保存在一个下标从0 0开始的一维数开始的一维数组中组中 使用使用JoinJoin函数可以把一个函数可以把一个String类型或类型或Variant类型数组类型数组中的各个元素连接成为一个字符串中的各个元素连接成为一个字符串 例例6-56-5 通过输入对话框输入一
22、批成绩,把及格的和不及格的通过输入对话框输入一批成绩,把及格的和不及格的成绩分别存放在数组成绩分别存放在数组a a和和b b中,并以每行中,并以每行5 5 个数据的形式输出数个数据的形式输出数组组a a和和b b。 分析:分析:由于事先并不知道及格的和不及格的成绩各有多少个,由于事先并不知道及格的和不及格的成绩各有多少个,因此需要使用动态数组存放成绩。因此需要使用动态数组存放成绩。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 146.36.3动态数组动态数
23、组 Private Sub Form_Click() Dim a() As Integer, b() As Integer Dim n%, pa%, pb%, i% n = Val(InputBox(请输入一个成绩,输入请输入一个成绩,输入-1结束结束) pa = 0: pb = 0分别表示数组分别表示数组a和和b中元素个数中元素个数 Do Until n = -1 If n = 60 Then pa = pa + 1 ReDim Preserve a(1 To pa) a(pa) = n Else pb = pb + 1 ReDim Preserve b(1 To pb) b(pb) = n
24、 End If n = Val(InputBox(请输入一个成绩,输入请输入一个成绩,输入-1结束结束) Loop 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 156.3 6.3 动态数组动态数组 Print Print 及格成绩:及格成绩: For i = LBound(a) To UBound(a) Print a(i); If i Mod 5 = 0 Then Print Next i Print 不及格成绩:不及格成绩: For i = LBoun
25、d(b) To UBound(b) Print b(i); If i Mod 5 = 0 Then Print Next iEnd Sub浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 166.5 6.5 控件数组控件数组 6.5.1 控件数组的概念控件数组的概念 VBVB允许将一组相同类型的控件构成一个控件数组,它们允许将一组相同类型的控件构成一个控件数组,它们共共用同一个控件名,共享同样的事件过程用同一个控件名,共享同样的事件过程。系统自动为控件数组中的每
26、个控件分配一个唯一的下标,系统自动为控件数组中的每个控件分配一个唯一的下标,即控件的即控件的IndexIndex属性属性,第一个元素的下标为,第一个元素的下标为0 0。 控件数组中的每个控件都有自己的属性设置。控件数组中的每个控件都有自己的属性设置。6.5.2 控件数组的建立控件数组的建立 1 1在设计阶段静态创建在设计阶段静态创建 (1)在窗体上创建控件数组中的第一个控件,并设置好控)在窗体上创建控件数组中的第一个控件,并设置好控件名等相关属性。件名等相关属性。(2)选择该控件,执行)选择该控件,执行“编辑编辑”菜单中的菜单中的“复制复制”命令。命令。(3 3)根据需要执行若干次)根据需要执
27、行若干次“编辑编辑”菜单中的菜单中的“粘贴粘贴”命令。命令。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 176.5 6.5 控件数组控件数组2在运行阶段动态添加在运行阶段动态添加 (1)在窗体上创建控件数组中的第一个控件,设置好控件名等)在窗体上创建控件数组中的第一个控件,设置好控件名等相关属性后,设置其相关属性后,设置其Index属性值为属性值为0,表示这是一个控件数组。,表示这是一个控件数组。 (2)在代码中根据使用)在代码中根据使用Load语句和语
28、句和Unload语句进行控件元素语句进行控件元素的添加和删除,具体使用形式为:的添加和删除,具体使用形式为: Load 控件数组名控件数组名(下标下标) Unload 控件数组名控件数组名(下标下标) (3 3)设置新添加控件的相关属性,其中可通过)设置新添加控件的相关属性,其中可通过LeftLeft属性和属性和TopTop属性确定其位置,并将属性确定其位置,并将VisibleVisible属性设置为属性设置为TrueTrue。.3控件数组的应用控件数组的应用 使用控件数组主要是利用其共享事件过程的特点来简化编程。使用控件数组主要是利用其共享事件过程的特点来简化编程。当对一个建
29、立好的控件数组编写事件过程时,为区别各个控件当对一个建立好的控件数组编写事件过程时,为区别各个控件,VB把控件的把控件的Index属性作为过程参数属性作为过程参数在过程中可以通过如下形式引用相关控件:在过程中可以通过如下形式引用相关控件: 控件数组名控件数组名(Index)(Index) 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 186.6 应用举例应用举例 6.6.1 统计问题统计问题例例6-76-7 输入一批学生成绩,分别统计输入一批学生成绩,分别统
30、计09、10199099和和100分的学生人数,界面如图分的学生人数,界面如图7-5所示,要求如下:所示,要求如下:(1 1)通过文本框)通过文本框txtInputtxtInput输入一批成绩,以逗号分隔。除输入一批成绩,以逗号分隔。除数字符、小数点、逗号和回车符外,文本框不接受其它字符。数字符、小数点、逗号和回车符外,文本框不接受其它字符。(2 2)成绩输入完毕按回车键后,程序自动将文本框中的数)成绩输入完毕按回车键后,程序自动将文本框中的数据以逗号为分隔符进行分离,统计并在图形框据以逗号为分隔符进行分离,统计并在图形框picOutputpicOutput中显中显示各分数段学生人数。示各分数
31、段学生人数。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 196.6 应用举例应用举例 分析分析: (1)程序中需要判断用户输入的字符,因此应考虑编写)程序中需要判断用户输入的字符,因此应考虑编写txtInput_KeyPress事件过程。事件过程。 (2)分离出来的数据存放在数组中,由于不确定数据个数)分离出来的数据存放在数组中,由于不确定数据个数,因此应该使用动态数组。,因此应该使用动态数组。 (3 3)需要)需要09、10199099和和100分十种
32、条件进行分类分十种条件进行分类统计,考虑定义一个有统计,考虑定义一个有1010个元素一维数组个元素一维数组b b作为计数器,作为计数器,b(0)b(0)记录记录09分的人数,分的人数,b(1)b(1)记录记录1 1019分的人数,分的人数,b(10)记录记录100分的人数。分的人数。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 206.6 应用举例应用举例 6.6.2 排序问题排序问题 1选择法排序(假设对选择法排序(假设对n个数按升序排列)个数按升序排列
33、)(1)从)从n个数中选出最小的数,与第个数中选出最小的数,与第1个数交换位置。个数交换位置。(2)从除第)从除第1 个数外的剩余个数外的剩余n-1个数中选出最小的数,与第个数中选出最小的数,与第2个数个数交换位置。交换位置。(3)重复选择)重复选择n-1次后,最终得到递增序列。次后,最终得到递增序列。 例例6-8 对随机产生的对随机产生的5个两位整数,使用选择法按递增排序后输出。个两位整数,使用选择法按递增排序后输出。 分析:分析:每次选出的阴影表示的最小数总是和方框表示的选择范围内的每次选出的阴影表示的最小数总是和方框表示的选择范围内的第一个数交换位置。第一个数交换位置。 浙江科技学院教信
34、系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 216.5应用举例应用举例 Private Sub Form_Click() Const N = 5 Dim a(1 To N) As Integer, i%, j%, k%, t% Randomize For i = 1 To N a(i) = Int(Rnd * 90) + 10随机产生一个两位整数随机产生一个两位整数 Print a(i); Next i For i = 1 To N 1选择选择N-1次次 k = ik代表
35、最小元素下标代表最小元素下标 For j = i + 1 To N比较的范围比较的范围 If a(j) a(j+1) Then t = a(j): a(j) = a(j+1): a(j+1) = tEnd If Next j Next i Print For i = 1 To N Print a(i); Next iEnd Sub浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 246.6 应用举例应用举例 6.6.3查找问题查找问题 1顺序查找顺序查找顺序查找
36、的基本思想是根据查找的关键值与数组中的元顺序查找的基本思想是根据查找的关键值与数组中的元素素一一比较一一比较,如果相同,则查找成功,返回该元素的下标;,如果相同,则查找成功,返回该元素的下标;如果均不相同,则返回如果均不相同,则返回-1表示查找失败。表示查找失败。例例6-106-10 编程实现顺序查找。编程实现顺序查找。 key = Val(InputBox(请输入查找的关键值请输入查找的关键值, 顺序查找顺序查找) For i = LBound(a) To UBound(a) If a(i) = key Then Print key & 为数组中第为数组中第 & i &
37、; 个元素个元素 Exit For End If Next i If i UBound(a) Then Print key & “不是数组中的元素不是数组中的元素” 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 256.6 应用举例应用举例 2 2二分查找二分查找 前提条件:所查找的数组必须已经排好序前提条件:所查找的数组必须已经排好序 算法描述(假设在一个升序排列的数组算法描述(假设在一个升序排列的数组a中查找关键值中查找关键值key)(1)确定查
38、找范围,下界)确定查找范围,下界low=LBound(a),上界,上界high=Ubound(a),计算,计算m=(low+high)2。(2)比较)比较a(m)与与key的大小关系:的大小关系:若若a(m)=key,则查找成功,返回,则查找成功,返回m,算法结束。,算法结束。若若a(m)key,则重新确定查找范围,则重新确定查找范围,low=m+1,high保保持不变,重新计算持不变,重新计算m=(low+high)2。(3)重复()重复(2)直到查找成功,或者)直到查找成功,或者lowhigh。若。若lowhigh则则说明数组不无此关键值。说明数组不无此关键值。 浙江科技学院教信系计算机基
39、础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 266.6 应用举例应用举例 方框表示查找范围,加下划线的数表示当前进行比较的元方框表示查找范围,加下划线的数表示当前进行比较的元素,二分查找每进行一次,查找范围就缩小一半。素,二分查找每进行一次,查找范围就缩小一半。 浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 276.6 应用举例应用举例 key
40、= Val(InputBox(请输入查找的关键值请输入查找的关键值, 二分查找二分查找) low = LBound(a) high = UBound(a) Do While low key Then high = m - 1 Else low = m + 1 End If Loop If low high Then Print key & 不在数组中不在数组中浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 286.6 应用举例应用举例 6.6.4插入和
41、删除问题插入和删除问题 1插入插入假设要在一个具有假设要在一个具有n个升序排列元素的一维数组中插入一个新个升序排列元素的一维数组中插入一个新的元素的元素k,算法描述如下:,算法描述如下:(1)从第)从第1个元素开始逐个与个元素开始逐个与k比较,一旦发现第比较,一旦发现第p个元素大于个元素大于k,则确定插入的位置为,则确定插入的位置为p,如果所有元素均小于,如果所有元素均小于k,则确定插,则确定插入的位置为入的位置为n+1。(2)重新定义数组大小,从第)重新定义数组大小,从第n个元素到第个元素到第p个元素逐一向后个元素逐一向后移动一个位置。移动一个位置。 (3 3)将)将k k赋值给第赋值给第p p个元素,完成插入操作。个元素,完成插入操作。 246108待插入元素待插入元素ka(1) a(2) a(3) a(4) a(5) a(6)7浙江科技学院教信系计算机基础教学网站:浙江科技学院教信系计算机基础教学网站:www.Goit.Netwww.Goit.Net目录6.1 6.2 6.3 6.4 6.5 本章小结 作业 296.6 应用举例应用举例 例例6-6-12 编程实现插入算法。编程实现插入算法。 k = Val(InputBox(请输入待插入的元素请输入待插入的元素, 插入插入) For i = LBound(a) To UBound(a)确定插入位置确定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小米3小米电视发布会 课件
- 医疗纠纷的心得体会模版
- 《大禹治水》教学设计
- 大学生职业规划大赛《地理科学专业》生涯发展展示
- 临床医学检验技术核心要点
- 精细化管理护理体系构建与实践
- 民办学校校长发言稿模版
- 玉林消防考试题及答案
- 小区物业管理调研报告
- 智慧教育云解决方案
- 2025山东济南先行投资集团有限责任公司及权属公司社会招聘169人笔试参考题库附带答案详解
- 八年级心理健康微课件
- 建设工程消防验收课件
- 《大众敏捷制造》课件
- 采矿机器人技术发展-全面剖析
- 地质勘查合同补充协议
- 某桥梁工程专项施工方案
- 信息技术服务质量承诺及保障措施
- GB 19646-2025食品安全国家标准稀奶油、奶油和无水奶油
- 电力交易员试题及答案
- 网约车租赁合同协议书
评论
0/150
提交评论