第一范文网 - 专业文章范例文档资料分享平台

高中信息技术《算法与程序设计VB(选修)》

来源:用户分享 时间:2025/6/28 14:14:22 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

结束查找。如果不相符,再判断关键值落在中间元素的左半部还是右半部,如果在左部,则保持下界位置不变,将上界设在中间元素的前一个位置,重新查找;如果在右部,则保持上界位置不变,将下界设在中间元素的后一个位置,重新查找。如此反复进行,若下界大于上界,表明没用元素与关键值相匹配,查找结束。

例如:数组a(9)中存放从小到大的10个数字字符:2,4,7,9,10,14,18,26,32,40,查找关键字是7的元素。

Private Sub Command1_Click() Dim a(9) As Integer ‘定义数组

Dim low As Integer, hight As Integer, mid As Integer‘定义下界、上界、中间数值类型 Dim flg As Boolean ‘定义查找标志为逻辑数据 a(0)= 2: a(1)= 4: a(2)= 7: a(3)= 9: a(4)= 10

a(5)= 14: a(6)= 18: a(7)= 26: a(8)= 32: a(9)= 40 ‘数组赋值 low = 0 ‘设置下界初始值 hight = 9 ‘设置上界初始值 flg = False‘设置查找标志初始为否

Do While low <= hight ‘设置循环查找的条件为下界小于等于上界 mid = (hight + low) / 2 取下上界中间值

If a(mid) = Val(Text1.Text) Then ‘查找输入的值与数组中的值是否匹配 flg = True ‘标志为true Exit Do ‘退出循环

ElseIf Val(Text1.Text) < a(mid) Then ‘如果输入的值小于下上界中间位的值 hight = mid – 1 ‘下界不变、上界由中间位前移一位 Else ‘如果输入的值大于中间位的值

low = mid + 1‘上界不变、下界由中间位后移一位 End If Loop If flg Then

Text2.Text = \要找的数\是数组第\个位置的数\Else

Text2.Text = (Text1.Text) & \不在数组中\End If End Sub

③.冒泡法排序算法

所谓排序法,就是批将一个无序序列排成一个有序序列的过程。

排序算法在计算机编程中使用非常频繁。在实践中,人们设计出了许多好的排序算法,如交换排序、插入排序、选择排序、归并排序、基数排序。各种算法都有其自身的特点与适用范围。

“冒泡法排序”也叫“起泡法排序”,是一种比较简单、易懂的交换排序方法,它通过相邻元素进行比较和交换,逐步将一个无序序列排成一个有序序列。将元素按从小到大的顺序排序列为升序排列,反之称为降序排序。

例1:将10个无序数据存放在数组元素a(0)到a(9)中,若要将这些数据按升序排序,下面一段用冒泡法排序的程序代码,其中空白处的代码应为( )。

Dim a(10) As Integer ‘要定义为有11个元素的数组 For i=0 to 9 For j=0 to 9-i If then t=a(j) a(j)=a(j+1)

第 13 页

a(j+1)=t End if Next j Next i

分析:本题中要求升序排序,即数据由小到大的冒泡法排序,程序中使用了两重循环,外循环是控制排序趟数,每执行一趟外循环,有序部分的数据就多一个;内循环控制每趟排序时数组元素的比较和交换,也就是只对无序部分的元素进行比较和交换。If语句中条件是判断相邻两个元素的大小,如果前面的元素a(j)大于后面元素a(j+1),则交换两个元素的值,即较大的元素向后移(如果是降序排列,则刚好相反)。故空白处应是a(j)>a(j+1)。

例2:用选择排序法将数组a中随机生成的10个整数按升序排列。 Private Sub Command1_Click() Dim a(10) As Integer For i = 1 To 10

a(i) = Int(Rnd * 1000) Next i

For i = 1 To 10 For j = 1 to i

If a(i)< a(j) Then ‘ 如果后面数a(i)小于前面数a(j)

a(0)= a(i) ‘a(0)作为中间变量,把后面小的数先放入中间变量中 a(i)= a(j) ‘把前面大的数移入后面

a(j)=a(0) ‘把中间变量的数赋给前面的数,把小的数移入前面 End If Next j Next i

For i = 1 To 10 Print CStr(a(i)) Next i End Sub

④插入排序法

插入排序法也是一种常用的排序算法,其基本思想是将一个数据序列看做两部分,前一部分是有序的,后一部分是无序的,排序时把无序部分的数据元素逐个插入到有序部分,使得有序部分的元素不断增加,无序部分的元素相应减少,最后所有元素志为有序序列。通常将无序部分中的第一个数赋给哨兵,然后哨兵分别跟有序部分的数进行比较。

插入排序的直接插入排序、折半插入排序、链表插入排序和希尔排序等。

时间复杂度是指对一组无序数列排序所用的时间。当然对同一组数据进行排序,所用的时间少的算法较优。一般来说,插入排序的时间复杂度要优于冒泡排序的时间复杂度。

例1:有一组数位于数组组元素a(0)至a(10)中,见下表中的“原始值”那一行。现采用插入排序法进行升序排序,经过三趟排序后,各变量中的值见下表中的“第三趟之后”。试问,进行第四趟排序时应将元素( )赋给哨兵,通过比较后,这个哨兵的值应赋给( )。第四趟排序完成后,各变量中的值应怎么样?请填入表中。 变量 原始值 第三趟之后 第四趟之后 A(0) A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) A(9) 8 2 9 6 6 8 2 9 7 7 5 5 15 15 3 3 17 17 0 0 A(10) 4 4 分析:这是一道插入法排序的分析题。在插入排序中,认为无序数列中的第一个是有序的,故在排序时从第二个数开始,分别赋给哨兵,将哨兵分别与前面的有序数列进行比较,然后将哨兵赋给相应的变量(即插入相应

第 14 页

的位置)。

对于本题,在进行第四趟排序时,先将a(4)赋给哨兵,将哨兵与a(3)比较,a(3)大于哨兵,将a(3)的值赋给a(4),将哨兵与a(2)比较,a(2)大于哨兵,将a(2)的值赋给a(3),将哨兵与a(1)比较,a(1)不大于哨兵,将哨兵插入到a(1)后面,即将哨兵赋给a(2),到这一步找不到了比哨兵大的数据,至此,这一趟排序结束。

第四趟后值为: 2 6 7 8 9 5 15 3 17 0 4

例2:将20个无序数据存放数组元素a(0)至a(19)中,若要将这些数按升序排列,下面是一段用插入法排序的程序代码,其中空白处的代码是( )。

For i=1 to 19 ‘从数组的第2个数开始 S=a(i) ‘赋值给哨兵 j=i-1 ‘前一值的地址

Do while a(j)>s ‘前一个值大于哨兵的值作为循环条件 A(j+1)=a(j) ‘前一值后移

j=j-1 ‘地址的值前移一位,使该位置的值与哨兵进行比较 If j<0 Then ‘如果地址的值小于数组的下界 Exit Do ‘退出 Do While 循环 Loop

A(j+1)=s ‘前一值a(j)小于哨兵,将哨兵赋值给a(j)后一值 Next i 四、应用程序设计

1.程序设计的一般步骤:

程序设计的一般步骤是:分析问题、设计算法、编写代码、调试运行。 例:编写程序,求100至1000之间的所用素数。

分析:所谓素数,就是除了本身和1以外并没有任何其它因子的正整数。可以此数除以用2到此数的平方根,如果余数为0则此数非素数。

因此可以根据循环来产生100至1000之间的素数,由于这个循环次数是确定的,可以用For/Next循环。 Dim i As integer,j As integer Dim t as Boolean For I=100 to 1000

T=false

For j=2 to sql(I)

If I mod j =0 then t=true Next j

If not t then print I Next I

2.简单的程序设计

应用所学知识进行简单的程序设计。

根据实际问题,按照分析问题、设计算法、编写代码、调试运行的步骤,独立解决简单的实际问题。能在此基础上优化程序。

例:回文数是指左右对称的十进制整数,如10201,232等,编程求所的五位数的回文数。

解此问题有多种方法,这里从完全平方数入手解决,由数学知识可知,100至326的完全平方数是五位。可提取五位数的各位数字进行比较。

Dim x As Single For i=101 to 316 x=i*I a=x \\ 10000

第 15 页

b=(x - a * 10000) \\ 1000 c=(x - (x \\ 100) * 100) \\ 10 d=x - (x \\ 10) * 10 If a=d and b=c Then

Print x End if next i

第 16 页

高中信息技术《算法与程序设计VB(选修)》.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1dl0x95dsx6u75f0ar9n_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top