- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VB选择排序专题
VB选择排序专题
班级 姓名
知识点回顾:
数组的作用:一组意义相同,类型相同的数据的保存,通常借助于数组。如:高二年级所有同学的学籍号可定义为大小为700(只能多不能少)的long类型的数组xjh1 to 700) 或 xjh(699);
数组名称可自取: 符合※以字母开头、※除了“_”外不能有其他字符、※不能用VB已用的关键字即可;
数组下标的定义可以从任何数开始,但通常为0或1,如:a(19),表示下标从0开始到19;a(1 to 19)表示下标从1开始。下标即位置,能代表数组值。
数组赋初值方法多样,通常用循环语句。没有赋值默认数组中每个数初值为0或FALSE或“”。
排序概念和意义:把一组类型相同的数据按照升序或者降序的规律排列起来。
排序的算法要点:
※将N个数据保存在数组中;
※理清是升序或是降序排序——升序为从小到大,降序为从大到小;
※算法很多——冒泡排序、选择排序、插入排序、希尔排序、快速排序等……
选择排序的特征:以降序为例——第一遍排序,找出最大值的位置,与数组中第一个数交换,第二遍排序,找出次大值的位置,与数组中第二个数交换。
8、关于选择排序需理解:
※N个数最多进行N-1遍排序;两数比较的次数最多为N*(N-1)/2;两数交换次数最多为:N-1次;
※选择排序的变式即改进算法非常多,比如N个数据排序时,发现某一遍排序两两比较过程中已没有数据交换则可以停止继续排序,比如比较过程中直接交换等,在练习中要加强理解和记录;
9、选择排序的经典代码:( 以降序为例,所有for语句都要熟练转化为do while语句 )
for i=1 to n-1 ’
for i=1 to n-1 ’控制排序遍数n-1
k=i ’第i趟排序假设i位置上的数最大
for j=i+1 to n ’比较剩下的数,次数为n-i次
if d(k)d(j) then k=j ’记录比较之后较大数的位置
next j
if ki then ’如果最值位置有变化的话则交换
d(i)=d(i)+d(k):d(k)=d(i)-d(k): d(i)=d(i)-d(k)
end if
next i
for i=
for i=n to 2 step-1 ’控制排序遍数n-1
k=i ’第i趟排序假设i位置上的数最大
for j=i-1 to 1 step -1 ’ 或写成 for j=1 to i-1 step 1
if d(k)d(j) then k=j ’记录比较之后较大数的位置
next j
if ki then ’如果最值位置有变化的话则交换,
t=d(i) : d(i)=d(k) : d(k)=t
end if
next i
巩固练习:
1、在VB中,如果变量p用来存储某张试卷上的缺考填涂标记,则p应采用的最适合的数据类型是( )
Integer??? B.Boolean? ??C.Single? ? D.String
2、VB语句“Dim a(50) As String”定义的数组元素个数以及第8个数组元素分别为( );VB语句“Dim a(1 to 50) As long”定义的数组元素个数以及第8个数组元素分别为( )
A. 51,a(7) B.50,a(7) C. 51,a(8) D.50,a(8)
3、有如下Visual Basic程序段:
m = a(2)
For j = 3 To 50
If a(j) m Then m = a(j)
Next j
Msgbox(str(m))
该程序段执行后,变量m中存储的是( )
A、a(1)至a(50)中的最小值
B、a(2)至a(50)中的最大值
C、a(2)至a
文档评论(0)