算法第25章复习Word文件下载.docx
- 文档编号:19108634
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:13
- 大小:439.88KB
算法第25章复习Word文件下载.docx
《算法第25章复习Word文件下载.docx》由会员分享,可在线阅读,更多相关《算法第25章复习Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
如果一个三位数等于它的每个数字的立方和,则此数称为“水仙花”数,如:
153=13+53+33
程序段如下:
Fori=100To999
a=i\100
b=i\10Mod10
c=iMod10
Ifa^3+b^3+c^3=iThen
List1.AddItem(Str(i))
sum=sum+1
EndIf
Nexti
其它参考实例:
百钱买百鸡,孙子算经,纸币问题,包装问题
解析算法及程序实现
解析算法的基本思想是用解析的方法找出表示问题的前提条件与所求结果之间关系的数学表达式,并通过数学表达式的计算来实现问题的求解。
例题1:
求解一元二次方程
1、分析问题
从我们通常解题的步骤来分析
(问题的前提条件abc与所求结果x的关系的数学表达式)
x=
2、将数学表达式转为计算机语言形式
dimx1,x2asdouble
dima,b,cASDouble
ifb*b-4*a*c>
=0then
x1=(-b+sqr(b*b-4*a*c))/(2*a)
x2=(-b-sqr(b*b-4*a*c))/(2*a)
text1.text=“x1=“+str(x1)
text2.text=“x2=“+str(x2)
else
print“方程无解”
endif
例题2:
火车托运行李,要根据行李的重量按下列标准收费:
若不超过50千克,按每千克0.35元收费,若超过50千克,超过部分则按每千克0.5元收费。
输入托运行李的重量,计算并输出托运行李的费用。
下面程序若用于实现上述目标,则划线红色加粗处的语句应更改为_________
subcommand1_click()
dimxasdouble
x=val(text1.text)
ifx>
50then
text2.text=str(0.35*x)
else
text2.text=str(0.5*x)
endif
endsub
答案:
划线处的填空内容依次更改为x<
=50和str(50*0.35+0.5*(x-50))
储藏问题,人口问题
排序算法的分析及实现----冒泡排序和选择排序
排序的意义:
排序是为了将一组杂乱的数据变成一组有序的数据。
(递增或递减)
冒泡排序:
理解:
冒泡排序是在一列数据中把较小的数据逐次向上推移的一种排序技术。
数组:
为了存储一组数据,我们需要用到数组变量
例如dimd(1to1000)asinteger
冒泡排序
⏹用数组来存储一系列同类型的数据,然后调整数组中的元素
⏹例如:
dimd(1to4)asinteger‘定义一个数组变量d
生成随机数,显示在list1
⏹PrivateSubCommand2_Click()'
产生8个随机数
⏹Randomize'
随机数初始化
⏹List1.Clear'
原始数据清空
⏹List2.Clear'
将排序后的列表数据清空
⏹Fori=1To8
⏹d(i)=Int(Rnd*1000)
⏹'
Rnd函数返回的随机数介于0和1之间,可等于0,但不等于1
⏹List1.AddItemStr(d(i))'
将数据显示到原始数据列表中
⏹Next
⏹EndSub
冒泡排序算法
⏹PrivateSubCommand1_Click()'
对8个数进行冒泡法排序
⏹List2.Clear'
⏹Fori=1To7
⏹Forj=8Toi+1Step-1
⏹Ifd(j)<
d(j-1)Then
⏹k=d(j):
d(j)=d(j-1):
d(j-1)=k
⏹EndIf
⏹Nextj
⏹Nexti
⏹Fori=1To8
⏹List2.AddItemStr(d(i))'
在列表2中显示排序后的数据
⏹Nexti
选择排序
选择排序(递增)的方法是
找出数组元素中最小的数据,使它与第一个元素中的数据交换位置
在余下的元素中继续找最小的元素,与第二个元素中的数据交换位置
……………………
算法演示
第1遍选择
第2遍选择
分析
程序实现
选择法排序
对8个数进行选择法排序
⏹Fori=1To7'
选择第i个最小的数
⏹Min=i
⏹Forj=i+1To8'
如果找到更小的,用min记住它的编号
⏹Ifd(Min)>
d(j)ThenMin=j
⏹Nextj
⏹IfMin<
>
iThen'
如果最小的数所在的位置不是i,则交换
⏹k=d(i)
⏹d(i)=d(Min)
⏹d(Min)=k
⏹EndIf
⏹Nexti
⏹Nexti
选择排序和冒泡排序的比较
以n个数据为例
交换次数
执行时间
冒泡
O(n2)
长
选择
O(n)
短
查找算法——顺序查找和对分查找
查找算法
查找是一种查询数据的技术,其目标是能以比较少的步聚和较短的时间找到所需的对象
顺序查找的基本思想
是从第一个数据开始,按数据的顺序逐个将数据与给定的值进行比较。
若某个数据和给定的值相等,则查找成功,找到所查数据的位置;
反之,查找不成功。
顺序查找
转化成程序
PrivateSubCommand6_Click()'
Key=Val(Text2.Text)
Fori=1Tonum
Ifd(i)=KeyThen
Label5.Caption="
在数组的"
+Str(i)+"
位置中"
ExitFor
Next
Ifi=num+1Then
在数组中没有找到"
+Str(Key)
EndIf
EndSub
对分查找的基本思想
对分查找的前提是数据已经有序(以递增为例),然后把待查找的数据与数组中间位置的数比较,如果比中间位置的数大,在数组的后半部分继续查找,否则在数组的前半部分查找,继续对分查找,直到找到待查找的数在数组中的位置或数组已无法对分
(1)过程:
代码分析command4的click过程
比较
⏹顺序查找是一种基本、简单的查找算法,但查找的效率往往过低;
⏹对分查找时每次都把查找范围缩小一半
⏹对分查找算法数据次数较少,效率较高,但它要求数组中的数据是有序的。
顺序查找与对分查找比较
是否需要
事先排序
平均查找次数
不需要
(n+1)/2
多
对分查找
需要
Log2n
少
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 25 复习
![提示](https://static.bdocx.com/images/bang_tan.gif)