排序--vb程序设计

来源:百度知道 编辑:UC知道 时间:2024/05/24 02:26:16
排序

实验内容:

1.利用随机函数产生100个三位整数,对这些整数进行排序(可以使用冒泡法、选择法、插入法等),记录下排序所花费的时间(如排序时间为0,请考虑如何解决)。

2.从键盘上输入一个数,在以上有序序列中查找该数,并返回下标(若有多个则返回第一个下标),若找不到则返回-1。

3. 从键盘上输入一个数,插入到有序序列中,使之仍然有序。

请将完成后的源文件上传。

提示:

排序算法(选择排序):

(1) 将100个数放到一个一维数组中;

(2) 从100个数中找出最小数的下标,出了内循环,最小数与第一个数交换位置,通过这一轮排序,第一个数已确定好;

(3) 除已排序的数外,其余的数按上面第(2)步的方法选出最小的数,与未排序数中的第一个数交换位置;

(4) 重复步骤(2),最后构成递增序列。

例如:原始数据是8 6 9 3 2 7

第一轮比较后: 2 6 9 3 8 7

第二轮比较后: 2 3 9 6 8 7

第三轮比较后: 2 3 6 9 8 7

第四轮比较后: 2 3 6 7 8 9

第五轮比较后: 2 3 6 7 8 9

冒泡排序:

算法的基本思想是:从第一个元素开始,对数组中两两相邻的元素比较,将值较小的元素放在前面,值较大的元素放在后面,一轮比较完毕,一个最大的数沉底作为数组中的最后一个元素,一些较小的数如同气泡一样上浮一个位置。n个数,经过n-1轮比较后完成排序。

例如:原始数据是 8 6 9 3 2 7

第一轮比较后: 6 8 3 2 7 9

呵呵, 5分2道题, ,第3个自己学习学习吧.

Dim nnn%(99)

Private Sub Command1_Click()
Dim i%, j%, m%
Randomize

For i = 0 To 99 '随机100个3位数
nnn(i) = Int(Rnd * 899 + 100)
Next

Dim stime
stime = Timer '定义变量放入当时时间

For i = 0 To 99 '从小到大排序,冒泡泡法呵
For j = i + 1 To 99
If nnn(i) > nnn(j) Then
m = nnn(i)
nnn(i) = nnn(j)
nnn(j) = m
End If
Next
Next

Print "完成数据排序.... 总用时:" & IIf((Timer - stime) < 0.0001, "小于0.0001", Timer - stime) & "秒!!"

End Sub

Private Sub Command2_Click()
Dim n%, i%
n = Val(InputBox("请输入一个3位的正整数!!"))

For i = 0 To 99
If nnn(i) = n Then
MsgBox "找到了你输入的这个数!! 它的位置是:" & i
Exit Sub
End If
Next
MsgBox "没有找到你输入的这个数!! 书上说它是-1位置呵!!"
End Sub

第三题可以用递减,再赋值。

搜藏了,