1. 题目介绍
对数值型数据进行爱徐是程序设计中最基本的数据处理操作,本题目要求编制一个动态的演示排序操作的实用程序,让用户深刻的了解不同排序方法的执行过程。本题目要求实现4种排序算法:比较法、选择法、插入法和冒泡法。
假设有一个数组a(1 To 10),共有10个元素,要将其按从小到大排序。
⑴ 比较法。第一轮从a(1)开始,依次将a(1)与其后的所有元素逐个的进行比较,如果其后的某个元素比a(1)小,则将两者对调,这样第一轮结束后a(1)中保留的是10个元素中最小的。然后从a(2)开始进行第二轮比较,将其与其后的所有元素比较,第二轮比较结束后a(2)中保留次小值,以此类推,最后将数组a中各元素的值即为排序后的结果。
⑵ 选择法。先找出a(2)~a(10)中最小的数,然后与a(1)进行比较,如果比a(1)小则对换;再将a(3)~a(10)中最小的数与a(2)比较,……,以此类推。每次都是从a(i+1)~a(10)中找到最小值后与a(i)进行比较,如果比a(i)小则交换。最后比较a(9)和a(10)的值,如果a(10)比a(9)小,则交换,排序完成。由此可见,选择法与比较法的思想是基本一致的,但在选择法中交换数据的次数比比较法少,所以选择法的执行效率更高一些。
⑶ 插入法。开始时a(1)的值不变,将a(2)根据大小顺序插入a(1)前或a(1)后;将a(3)根据大小插入到已排序的a(1)和a(2)之前、之后或中间,……,将a(i)插入到a(1)~a(i-1)之中;以此类推,处理完a(10)之后,数组即排序完成。
⑷ 冒泡法。依次比较相邻的两个数a(i-1)和a(i)(i=2 to 10),如果a(i-1)>a(i),则交换两个元素值。这样第一轮下来,a(10)即为最大的;再比较a(i-1)和a(i)(i=2 to 9),比较完毕,a(9)即为次大值,以此类推。
本程序能以动画方式演示上述4种排序算法的排序过程,并可以比较4种算法所需交换数据的次数,从而对4种排序算法有一个比较直观的认识,也可以对4种排序算法的排序效率进行对比。本程序还可以找出所产生的10个随机数中的最大值、最小值和平均值。
2. 功能要求
⑴ 程序启动后,显示主界面。首先单击“产生10个随机数”按钮来产生10个随机数,并显示在10个文本框中;然后选择一种“演示模式”和“排序方式”,其中演示模式可以直接给出排序结果,也可以通过动画动态演示整个排序过程,排序方式可以按从大到小顺序,也可以按从小到大顺序排序。
⑵ 单击主窗口的“排序选择”按钮,打开“排序选择”窗口。从中选择一种排序方式,单击不同排序方式时,“算法描述”中简要介绍这种算法。单击“确定”按钮返回到主窗口,主窗口中最上方框架控件的标题文字显示当前所选的排序算法。
⑶ 设置完毕,单击“开始排序”按钮(此按钮在生成数据之前是不可用的)启动排序过程。若选择了动画方法,红色背景的文本框表示当前正在比较的元素,黄色的代表已排序的元素,两个运动的文本框表示交换过程。在排序过程中可以调节水平滚动条来控制演示的速度。排序结束后程序以消息框的形式报告数据交换的次数
⑷ 选择窗口主菜单中的“颜色设置”命令,主窗口扩大,底部显示“颜色设置”框架可以对“文本背景色”、“文本前景色”、“已排序元素色”和“交换结点色”进行设置。再选择此命令,窗口会发到原来大小
⑸ 选择主菜单中的“退出”按钮或“功能”菜单中的“退出”命令可退出本程序,程序显示对话框予以确认。
用VB编制一个动态的演示排序操作的实用程序
1.在数据库中建立HM和HM2两个表,注意你建立数据表的时候各列名称设定好。2.VB中触发时间是List1的CLICK时间,然后检测是否收到ASC码13(即回车符)检测到后往下执行 3.对输入的字符串做检测,可以先检测长度是否7位或11位,然后对各个位是否为数字做检测(可以循环去ASC的办法),是则往下执行,否...
排序演示的VB程序
Private Sub Command1_Click() '生成 Dim i For i = 1 To 10 List1.AddItem Rnd * 1000 Next End Sub Private Sub Command2_Click() '添加 List1.AddItem Rnd * 1000 End Sub Private Sub Command3_Click() '从小到大排列 Dim i%, j%, tmp As Single For i = 0 To List1.List...
vb排序的程序
Private Sub command1_click()Randomize For i = 1 To 10 a(i) = Int(Rnd * 90 + 10)Print a(i);Next i Print 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 Label...
如何用VB进行排序?
4.定义一个自定义函数,比较整数序列中任意两个数字的序数大小。5.在主函数中,首先定义两个整数,并保存整数个数和排名计数。6.使用for循环输入序列中的整数,并设置序列中每个整数的序列号。7.按整数大小排序的序列中的所有数值。8.将好排序数值添加排序编号。9.最后,根据索引输出所有整数的排序...
用VB实现常用排序算法的动态演示?
动态演示不会啊 排序还会得
...程序,可以将输入的10个以上的数字 按大小顺序排列出来,可以给我思路...
排序的方法有很多。说2个最简单的(设让结果从小到大排列)方法一 假设10个数 把第一个依次与他后面的比较,如果比后面的大,就把位子换下,这样当第一个看完后面9个数后第一个数就变成最小的数了 再把第二个依次与后面8个比较,让第二个变成9个中最小的 以此类推,每次都拿还没比出顺序的...
VB排序程序
dim a(10)for i=0 to 10 a(i)=val(inputbox("输入一个数:"))next '排序 for i=0 to 9 for j=i+1 to 10 if a(i)
vb 编写一个程序,输入任意10个数字,从中找出最大和最小的数,并给出最...
ReDim SerAim(i)If Vimt(i) > Vimt(j) Then '这个语句是以小到大排序,数组的第一个就是最小数 If Vimt(i) < Vimt(j) Then '这个语句是以大到小排序,数组的第一个就是最大数 '注意上面的二个语句只能用一个!!Num = Vimt(i)Vimt(i) = Vimt(j)Vimt(j) = Num E...
在vb中排序的问题
嗯,这是个老问题。就是普通的排序法就可以了呀。1.先把分数赋入一个数组。2。然后使用循环,让第一个数和后面所有的数依次比较,如果是降序排列,就一直比较到比第一个数小的那一位,然后互换。具体的你可以先试试,或者百度hi发消息聊。。呵呵 ...
VB题,关于排序的编程.
function aa(a)dim b for i=1 to 100 for j=i to 100 if a(i)