例题1:用随机函数产生20个1~100之间的整数,并按升序排列。使用冒泡排序法。
排序是程序设计中的重要算法,我们先来学习冒泡排序的思想:
冒泡排序算法:
对于大小为n的数组a,我们先依次比较两个相邻的元素:a[1]和a[2]、a[2]和a[3]、……、a[n-1]和a[n],比较时将小的元素交换到前面,完成第一趟排序,这时a[n]中将存放数组元素中最大的值;然后使用相同的算法在a[1]到a[n-1]之间依次进行比较交换,完成第二趟排序,这时a[n-1]中将存放数组元素中第二大的值;依次类推,经过n-1趟排序,数组元素将从小到大排列。
随机数的产生:
VB中,可使用函数Rnd(x)产生一个值介于0~1之间的单精度数,即函数Rnd(x)的返回值范围是[0,1)。其中函数Rnd的参数x是随即数产生因子。
为了保证产生的是1~100之间的整数,可采用如下表达式:
Int(Rnd(1)*100+1)
代码如下:
Private Sub Form_Click()
DimN(1 To 20) As Integer
Dim R As Integer
Dim I As Integer
Dim J As Integer
Print "排序前的数据为:"
For I = 1 To 20
N(I) = Int(Rnd(10)* 100 + 1)
Print N(I);
Next I
For I = 1 To 19
For J = 1 To 20 - I
If N(J) > N(J + 1) Then
R = N(J)
N(J) = N(J + 1)
N(J + 1) = R
End If
Next J
NextI
Print"排序后的数据为:"
ForI = 1 To 20
Print N(I);
NextI
End Sub
例题2:用随机函数产生20个1~100之间的整数,并按升序排列。使用选择排序法。
选择排序算法:
对于大小为n的数组a,我们先从a[1]、a[2]、…、a[n]中选出最小的元素a[k1],并将其与a[1]互换位置;而后再从a[2]、…、a[n1]中选出最小的元素a[k2],并将其与a[2]互换位置;……;如此循环n-1次,就完成了整个数组的排序。
Private Sub Form_Click()
DimN(1 To 20) As Integer
Dim R As Integer
Dim I As Integer
Dim J As Integer
Print "排序前的数据为:"
For I = 1 To 20
N(I) = Int(Rnd(10)* 100 + 1)
Print N(I);
Next I
ForI = 1 To 19
For J = I + 1 To 20
If N(I) > N(J) Then
R = N(J)
N(J) = N(I)
N(I) = R
End If
Next J
NextI
Print"排序后的数据为:"
ForI = 1 To 20
Print N(I);
NextI
End Sub