Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms

上传人:E**** 文档编号:89186349 上传时间:2019-05-20 格式:PPT 页数:12 大小:207KB
返回 下载 相关 举报
Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms_第1页
第1页 / 共12页
Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms_第2页
第2页 / 共12页
Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms_第3页
第3页 / 共12页
Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms_第4页
第4页 / 共12页
Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms》由会员分享,可在线阅读,更多相关《Visual Basic 6.0程序设计 教学课件 ppt 作者 黄学平 主编 Ⅲ-07 normal algorithms(12页珍藏版)》请在金锄头文库上搜索。

1、补充,数组最多60维 上机实验保存文件的方式,递归,1.递归的概念: 用自身的结构来描述自身就称为“递归”。例对阶乘的定义:,2. 递归过程 过程在自身定义的内部调用自己,编fac(n)=n! 的递归函数 Function fac(n As Integer) As Integer If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function,递推,回归,n=3 Function fac%(n%) If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Func

2、tion,n=2 Function fac%(n%) If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function,n=1 Function fac%(n%) If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function,Private Sub Command1_Click() Dim n%,x% n = InputBox(“input”) 运行时输入3 x=fac(n) print x End Sub,例1,递归算法设计简单,但消耗的机时和占据的

3、内存空间比非递归大。 思考: 若上述fac函数中没有这句语句: If n = 1 Then fac = 1 即仅有语句: fac = n * fac(n - 1) 程序运行将造成何结果? 由此可见构成递归的条件: 递归结束条件及结束时的值; 能用递归形式表示,并且递归向终止条件发展。,数组排序 对已知存放在数组中的n个数。,(1)选择法排序 算法思想: 1)对有n个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第1个数交换位置; 2)除第1 个数外,其余n-1个数中选最小或最大的数,与第2个数交换位置; 3)依次类推,选择了n-1次后,这个数列已按升序排列。,原始

4、数据:8 6 9 3 2 7 第一轮后:2 6 9 3 8 7 第二轮后:2 3 9 6 8 7 第三轮后:2 3 6 9 8 7 第四轮后:2 3 6 7 8 9 第五轮后:2 3 6 7 8 9,选择法排序(升序)的VB程序,For i = 1 To n - 1 imin = i For j = i + 1 To n If a(imin) a(j) Then imin = j Next j temp = a(i) a(i) = a(imin) a(imin) = temp Next i,原始数据:8 6 9 3 2 7 第一轮后:2 6 9 3 8 7 第二轮后:2 3 9 6 8 7 第

5、三轮后:2 3 6 9 8 7 第四轮后:2 3 6 7 8 9 第五轮后:2 3 6 7 8 9,实例2,(2)冒泡法排序(递增),算法思想:(将相邻两个数比较,小的调到前头) 1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”; 2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。,冒泡法排序(升序)的VB程序:,For i = 1 To n - 1 For j

6、= 1 To n-i If a(j) a(j+1) Then temp=a(j) a(j)=a(j+1) a(j+1)=temp End if Next j Next i,? 编写一个数组排序的子过程,实例2,查 找,For i=1 to n If x=a( i) Then Find=i : exit for Next i,1、顺序查找法(在一列数中查找某数x) 算法思想:一列数放在数组a(1)-a(n)中,待查找的数放在x 中,把x与a数组中的元素从头到尾一一进行比较查找。,Option Base 1 Private Function Find( a( ) As Single,x!) As

7、Integer Dim n%,i% Find=0 n=Ubound( a ) End Function,实例2,2、折半查找法(只能对有序数列进行查找),算法思想:n个有序数存放在数组a(1) a(n)中,要查找的数为x。变量high,low,mid 分别表示查找范围的顶部、底部和中间,mid=(high+low)2,若: (1)x=a(mid),则已找到退出,否则进行下面的判断; (2)xa(mid),x必定落在mid+1和high的范围之内, low=mid+1; (4)在确定了新的查找范围后,重复进行以上比较,直到找到或者low=high。,find = False 判断是否找到的逻辑变量 low = 1 high= n n为数组下标的上界 Do While low = high And Not find mid = (high + low) 2 If x = a(mid) Then find = True Print “the position is “; mid ElseIf x a(mid) Then high = mid - 1 Else low = mid + 1 End If Loop If (Not find) Then Print x; “has not found“,实例2,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号