四大算法-练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法的程序实现
一、排序:随机产生50—100之间的10个整数存放在A数组中,并按从小到大排序输出。
冒泡排序
Dim a(1 to 10) as integer For i = 1 to 10
A(i) =int (rnd*51) + 50 Print a(i);
Next i
For i = 10 to 2 step -1
For j = 1 to i-1
If a(j)>a(j+1) then
t=a(j)
a(j)=a(j+1)
a(j+a)=t
End if
Next j
Next i
For i = 1 to 10
Print a(i);
Next i
选择排序
Dim a(1 to 10) as integer For i = 1 to 10
A(i) =int (rnd*51) + 50
Print a(i);
Next i
For i = 1 to 9
For j =i+1 to 10
If a(i)>a(j) then
t=a(i)
a(i)=a(j)
a(j)=t
End if
Next j
Next i
For i = 1 to 10
Print a(i);
Next i
二、顺序查找
在有10个数据的数组D中,查找文本框Text1输入的数据。Dim i,key as integer
key=Val(Text1.Text)
for i=1 to n
if d(i)=key then
Print key+”在数组第”+i+”个位置。”
Exit for
End if
Next i
If i>n then Print"没有找到"
三、对分查找
有10个数据已经按照升序存放在数组D中,要查找的数据通过文本框Text1输入。
Dim d(1to10)As Integer
key=Val(Text1.Text)
i=1:j=10'查找区间初始化
xb=0'记忆查找成功时的下标
nc=0'统计查找次数
Do While i<=j'为何不用For循环?
nc=nc+1'nc记录查找次数
m=Fix((i+j)/2)'计算出中间位置m=Int((i+j)/2)或m= (i+j)\2 If d(m)=key Then'查找成功立即终止循环
xb=m'查找成功时变量xb记忆住数组下标
Exit Do
End If
If key j=m-1 Else'准备在下半区继续查找 i=m+1 End If Loop If xb<>0Then'查找成功,输出下标xb Print xb Else'查找不成功 Print"没有找到" End If 算法的程序实现 一、排序:随机产生50—100之间的10个整数存放在A数组中,并按从小到大排序输出。 二、顺序查找 在有10个数据的数组D中,查找文本框Text1输入的数据。Dim i,key as integer key= for i= to if then Print key+”在数组第”+i+”个位置。” End if Next i If then Print"没有找到" 三、对分查找 有10个数据已经按照升序存放在数组D中,要查找的数据通过文本框Text1输入。 Dim d(1to10)As Integer key= i=:j='查找区间初始化 xb='记忆查找成功时的下标 nc='统计查找次数 Do While'为何不用For循环? nc='nc记录查找次数 m='计算出中间位置 If Then'查找成功立即终止循环 xb='查找成功时变量xb记忆住数组下标 End If If Then'准备在上半区继续查找 j= Else'准备在下半区继续查找 i= End If Loop If Then'查找成功,输出下标xb Print xb Else'查找不成功 Print"没有找到" End If 四、编写程序: 用二分法统计素数个数。在文本框text1中输入1—1000范围内的某个数值,判断此数是否为素数,若不是素数,lab1中显示”此数不是素数”,否则,显示此数之前的素数个数。