✅ 操作成功!

vb数组

发布时间:2023-06-13 作者:admin 来源:文学

vb数组

vb数组

首席官-预充式注射器

2023年3月19日发(作者:st盐湖)

算法:

Fori=1ton-1‘i表示比较轮数

Forj=i+1t0n‘J表示每轮比较次数

Ifa(i)>a(j)thent=a(i):a(i)=a(j):a(j)=t‘如果发现后面的数比前面的数小,则两数位置

进行交换

Nextj

Nexti

举例:有如图窗体,两个文本框、两个标签和一个命令按钮,编程实现:单击命令按钮后,

随机产生10个两位正整数放在text1中,每行一个,并使用选择排序算法排序后显示在text2

一、冒泡排序法

算法思路:位置相邻两数进行两两比较,在比较时如果发现前面的数比后面的数大,则

进行交换,都比较完一轮后,把最大一个数放到最后,如此进行下去即可完成冒泡排序。

算法:

Fori=1ton-1‘i表示比较轮数

Forj=1t0n-i‘J表示每轮比较次数

Ifa(j)>a(j+1)thent=a(j):a(j)=a(j+1):a(j+1)=t‘如果发现前面的数比后面的数大,则两

数位置进行交换

Nextj

Nexti

举例:随机产生20个100以内的正整数,按从小到大的顺序输出在窗体上,每行5个。

Privatesubform_click()

Dimx(1to20)asinteger

Fori=1to20

X(i)=int(rnd*99)+1‘随机产生100以内的随机数

Nexti

Rem冒泡排序

Fori=1to19

Forj=1to20-i

Ifx(j)>x(j+1)thent=x(j):x(j)=x(j+1):x(j+1)=t

Nextj

Nexti

Rem按每行5个数输出

Fori=1to20

Printx(i);

Ifimod5=0thenprint‘如果每行输到5个数,则换行

Nexti

Endsub

二、比较交换法

算法思路:假设第一个数最小,然后第一个数依次与后面的每一个数都进行比较,若比

较时发现后面的数比第一个数小,则两数位置进行交换,全部都比较完算一轮,每一轮比较

完后,第一个数是最小的数,如此进行即可完成比较排序。

文本框中,也是每行一个。

PrivateSubCommand1_Click()

Dima(1To10)AsInteger

Fori=1To10'产生10个两位正整数,并放到text1文本框中

a(i)=Int(Rnd*90)+10

=&a(i)&vbCrLf

Nexti

Rem排序

Fori=1To9

Forj=i+1To10

Ifa(i)>a(j)Thent=a(i):a(i)=a(j):a(j)=t

Nextj

Nexti

Rem把排序好的数组放到text2文本框中

Fori=1To10

=&a(i)&vbCrLf

Nexti

EndSub

算法思路:假设第一个数最小,接着记下最小数所在的位置,然后将最小数依次与后面的

每一个数都进行比较,若比较时发现后面的数比最小的数还小,则修改最小数所在位置,全

部都比较完算一轮,每一轮比较完后,最小数所在的位置是否跟假设的是同一个位置,若不

是,则最小数与第一个数进行交换位置,如此进行即可完成选择排序。

算法:

Fori=1ton-1‘i表示比较轮数

P=i‘假设第i个数最小,并记下最小数所在位置

Forj=i+1t0n‘J表示每轮比较次数

Ifa(p)>a(j)thenp=j‘发现有更小的数,则修改最小数P的位置

Nextj

Ifpithent=a(i):a(i)=a(p):a(p)=t‘如果假设不成立,则两'数位置进行交换

Nexti

三、选择排序

Dima()AsInteger,nAsInteger

PrivateSubCommand1_Click()'随机产生20个互不相同的两位正整数

n=10

ReDima(1Ton)AsInteger

Fori=1Ton

a(i)=Int(Rnd*90)+10

f=false'假设第i个数与前面已生成的数中没有相同的

Fork=1Toi-1

Ifa(i)=a(k)Then'如果第i个数与前面的数有相同

i=i-1'第i个数重新产生

f=true'已经找到与前面有相同的数

ExitFor'不再寻找,直接退出内嵌的循环

EndIf

Nextk

Iff=ma(i)'把产生的两位数放入list1列表框中

Nexti

EndSub

PrivateSubCommand2_Click()

Rem选择排序法,从大到小

Fori=1Ton-1

p=i

Forj=i+1Ton

Ifa(p)

Nextj

IfpiThent=a(p):a(p)=a(i):a(i)=t

Nexti

Rem把排序好的10个放入list2列表框中

Fori=1To10

ma(i)

Nexti

EndSub

例题:随机产生20个互不相同的两位正整数放入list1列表框中,用选择法将这20个数按

从大到小的顺序在list2列表框中输出。

👁️ 阅读量:0