VB第七章

更新时间:2023-09-05 02:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机VB教程 实例 基础

常 用 算 法 ------------------------- 排序算法 --〉比较互换 选择法 冒泡法 查找算法 --〉顺序查找 折半查找 素数的求法 --〉定义法 筛选法 解一元方程 --〉牛顿迭代法 二分法 数值积分 --〉矩形法 梯形法 辛普生法 数值转换 --〉B<->O<->D<->H

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

7.1 常用的排序算法1:比较互换法 基本过程(以降序为例):将第一个元素顺序与其后 基本过程(以降序为例):将第一个元素顺序与其后 ): 面的元素比较,比第一个大则进行交换, 面的元素比较,比第一个大则进行交换,第一轮完毕 最大的元素被挪到了第一个位置, 后,最大的元素被挪到了第一个位置,第二轮从第二 个元素开始重复上面的过程, 个元素开始重复上面的过程,结束后得到第二个最大 的元素, 轮的比较, 的元素,如此下去经过 N-1 轮的比较,可将 N 个数 排好 举例 原始数据: 原始数据: 1,2,3,5,4 要求: 要求:降序

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

第 一 轮 比 较 :

1 2 3 5 5

2 1 1 1 1

3 3 2 2 2

5 5 5 3 3

4 4 4 4 4

第一轮结束,找到最大值 5 第一轮结束,

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

第 二 轮 比 较 :

5 5 5 5

1 2 3 4

2 1 1 1

3 3 2 2

4 4 4 3

第二轮结束,找到第二最大值 4

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

第三轮结果:5 第三轮结果:

4

3

1

2

第四轮结果: 第四轮结果:5 4 3 2 1 公式表示:(N为排序的维数, OP为操作 为操作, 公式表示:(N为排序的维数, OP为操作,降序为 为排序的维数 “>”) ) N‘外层循环N-1次 外层循环N for (i=1 to N-1) 外层循环 ‘内层依赖外层 for (j=i+1 to N) 内层依赖外层 S(i)) if (S(j) OP S(i))then t=S(i):S(i)=S(j):S(j)=t ‘交换 交换 End if Next j VB例 Next I VB例7-1点此进入

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

2:选择法排序 特点:比较後不立即互换元素, 特点:比较後不立即互换元素,而是记下其位置并 在每一轮比较完毕后和S(i)互换. S(i)互换 在每一轮比较完毕后和S(i)互换. 首先,比较的元素不同,以降序为例, 首先,比较的元素不同,以降序为例,是当前元素 与上次比较後的最大元素进行比较,因此, 与上次比较後的最大元素进行比较,因此,在进行 比较之前,要有一个初始化最大元素的过程. 比较之前,要有一个初始化最大元素的过程. 其次, 其次,确定完毕的元素的互换是在每一轮完成后进 行的,而不是在比较後进行的. 行的,而不是在比较後进行的. 再次,互换元素的不同, S(i 再次,互换元素的不同,为S(i)和S(iMax) S(iMax) iMax :

举例 原始数据: 原始数据: 1,2,3,5,4 要求: 要求:降序

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

第一轮比较,初始化最大元素为iMax=1 1 2 3 5 4 iMax=1 iMax=2 1 2 3 5 4 iMax=2 iMax=3 1 2 3 5 4 iMax=3 iMax=4 1 2 3 5 4 iMax=4 iMax=4 S(1) S(iMax)的结果 5 2 3 1 4

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

如此下去,第二轮找到4,第三轮3,.... 选择法的公式表示: For i=1 to N-1 iMax=I ‘初始化iMax,在每轮比较开始处 for j=I+1 to N if(S(j) OP S(iMax)) then iMax=j next j ‘注意比较对象的转变 t=S(i):S(i)=S(iMax):S(iMax)=t ‘注意互换的时间 Next I VB例7-2点此进入

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

3:冒泡法排序 如果按升序排序,则方法为: 如果按升序排序,则方法为: 将相邻两个数比较,把小数对调到前边, 将相邻两个数比较,把小数对调到前边,如此进 行一轮後,就会把最大的数互换到最后,再进行一次, 行一轮後,就会把最大的数互换到最后,再进行一次, 则会把第二大数排在倒数第二的位置上,进行N- N-1 则会把第二大数排在倒数第二的位置上,进行N-1 次後,整个数列即可排好. 次後,整个数列即可排好. 在这种排序过程中,小数如同气泡一样逐层上伏, 在这种排序过程中,小数如同气泡一样逐层上伏, 而大数逐个下沉,因此,被形象的喻为“冒泡” 而大数逐个下沉,因此,被形象的喻为“冒泡”. 特征: 特征: 当数据的大小顺序与要求不符时(逆序),才进 当数据的大小顺序与要求不符时(逆序),才进 ), 行互换操作. 行互换操作.

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

第 一 轮 比 较 :

9 4 4 4 4

4 9 7 7 7

7 7 9 5 5

5 5 5 9 2

2 2 2 2 9

第一轮结束,最大值 9沉到最底 第一轮结束,

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

第 二 轮 比 较 :

4 4 4 4

7 7 5 5

5 5 7 2

2 2 2 7

9 9 9 9

第二轮结束,次大值7沉到倒数第二 第二轮结束,次大值7

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

冒泡法的公式表示: 冒泡法的公式表示: For i=1 to N-1 for j=1 to N-i ‘比较次数逐次减少 比较次数逐次减少

if(S(j) OP S(j+1)) then t=S(j):S(j)=S(j+1):S(j)=t ‘立即互换 end if next j next i

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

7.2 常用的查找算法7.2.1 顺序查找 顺序查找表现是把待查找的数与数组中的数从头 到尾逐一比较, 来表示当前比较的位置, 到尾逐一比较,用一变量 P 来表示当前比较的位置, 初始为1, 初始为 ,当待查找的数与数组中 P 位置的元素相等时 即可结束,否则 继续比较, 即可结束 否则 P=P+1 继续比较

,当 P 大于 数组的最 大长度,也应该结束 也应该结束. 大长度 也应该结束. 注意退出的两种情况, 注意退出的两种情况,分别为 大于数组的最大长度). 到(P大于数组的最大长度). 大于数组的最大长度 找到 和 未找

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

顺序查找的公式表示(x为待查找的数): 顺序查找的公式表示(x为待查找的数): (x为待查找的数 P=1 Do while x<>S(p) And p<N p=p+1 Loop ‘退出的两种情况 退出的两种情况 If x=S(p) then ‘找到,处理 找到, 找到 else ‘没找到,处理 没找到, 没找到 end if ‘初始化比较位置 初始化比较位置

VB例7-3点此进入 例 点此进入

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

7.2.2 折半查找 折半查找法是对有序数列进行查找的一种高效查找办 其基本思想是逐步缩小查找范围, 法,其基本思想是逐步缩小查找范围,因为是有序数 所以采取半分作为分割范围可使比较次数最少. 列,所以采取半分作为分割范围可使比较次数最少 比较过程: 比较过程 设置三个指针,分别指向数组序列 S 的Top,Bottom和 设置三个指针 分别指向数组序列 和 Middle,其中 其中Middle=(Top+Bottom)/2,进行下列判断 其中 进行下列判断 1) 等于S(Middle),则已经找到 位置就是 则已经找到,位置就是 若待查找的数 X 等于 则已经找到 Middle.否则进行下面的判断 否则进行下面的判断. 否则进行下面的判断

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

2) 如果 X 小于 S(Middle),因为是有序数列 则 X 必定落在Top 因为是有序数列,则 必定落在 因为是有序数列 的范围之内,下一步查找只需在此范围之内进行 和 Middle-1的范围之内 下一步查找只需在此范围之内进行 的范围之内 即可.即 位置不动,Bottom变为 Middle-1.重复 1) 即可 即可 即Top位置不动 位置不动 变为 重复 即可. 3) 如果 X 不小于 S(Middle),则 X 必定落在 Middle+1 和 则 Bottom之间 下一步查找范围应该是 Top=Middle+1 和 之间,下一步查找范围应该是 之间 Bottom,设定完 设定完Top後即可转到 1) 继续判断 设定完 後即可转到 继续判断. 注意: 注意 在此循环过程中,Top,Middle,Bottom都是表示位置的整数 如 在此循环过程中 都是表示位置的整数,如 都是表示位置的整数 果循环到 Top=Middle 或者 Middle=Bottom,则表明此数列中 则表明此数列中 没有我们要找的数.应该退出循环 应该退出循环. 没有我们要找的数 应该退出循环

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

折半查找的公式表示: 折半查找的公式表示: result = False ‘初始化逻辑变量 初始化逻辑变量 Top = 1:bottom = N:middle=(top+bottom)/2 ‘初始化指针 初始化指针 Do While (result = False and middle

<>bottom) ‘构造循环 构造循环 middle = (bottom +Top) / 2 ‘初始化指针 初始化指针 If X = S(middle) Then ‘判断 判断 result = True ‘找到 找到 Else If X > S(middle) Then ‘根据大小 根据大小 Top = middle + 1 ‘确定下一步比较范围 确定下一步比较范围 Else bottom = middle - 1 VB例7-4点此进入 End If End If Loop ‘下一步通过分析 下一步通过分析result的真值来区分是否找到 下一步通过分析 的真值来区分是否找到

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

7.3 素数的判定和求法素数的定义: 素数的定义: 除了1与本身之外,不能被其他正整数整除的数, 除了1与本身之外,不能被其他正整数整除的数, 叫作素数,也叫质数。 叫作素数,也叫质数。 按照习惯规定, 不算素数, 按照习惯规定,1 不算素数,最小的素数是 2, 其余的是 3、5、7、11、13、17、19……等等。 11、13、17、19 等等。 等等 7.3.1 由定义判断素数 ,从I=2,3,4,5…到 对于数 M ,从I=2,3,4,5 到 m-1 判断 m 能否 整除,如果全部不能整除, 是素数, 被 I 整除,如果全部不能整除,则 m 是素数,只要有一 个能除尽, 不是素数,为了压缩循环次数, 个能除尽,则 m 不是素数,为了压缩循环次数,可将判断 范围从 2 --- m-1 改为 2 -- int(sqr(m))

计算机软件技术基础 Visual Basic 程序设计

计算机VB教程 实例 基础

根据定义判断是否素数的公式表示 I=2:j=sqr(m) ‘初始化 初始化 Do While(I<=j) and (m Mod i)<>0 I=I+1 Loop ‘根据退出的两种情况来判断是否素数 根据退出的两种情况来判断是否素数 If I>j then ‘是素数 是素数 else ‘有整除情况 有整除情况 end if VB例7-5点此进入 例 点此进入

计算机软件技术基础 Visual Basic 程序设计

本文来源:https://www.bwwdw.com/article/ad6i.html

Top