关键词不能为空

当前您在: 主页 > 英语 >

(完整版)VB常用算法——排序

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 09:39
tags:

-

2021年2月28日发(作者:suprise)


VB


常考算法(八)排序:



1


、算法



1


)选择法排序


算法说明:


根据上例中求最小值的思路,


我们可以使用如下 方法进行从小到大排序:



一轮,


以第 一个元素逐个跟后面的所有元素比较,


如果比后面的元素大就进行交换,


经过一


轮比较,


第一个元素被确定为最小;

< p>
同样的方法,


下一轮以第二个元素跟剩下的所有元素进

行比较确定下次小的元素;以此类推…



下面我们以图形的 形式体现对


5


个数进行选择排序的过程:



第一轮:



1


1


6


2


2


最小值





6


6


2


6


6



4


4


4


4


4



2


2


1


1


1



5


5


5


5


5



第二轮:










1


1


1


1



2


6


4


2



次小值



6


4


6


6



4


2


2


4



5


5


5


5



第三轮:











第四轮:




1


1


1


1


1



2


2


2


2


2



4


4


6


4


4



6


5


4


6


6



5


6


5


5


5



从上图可以发现对


5


个元素进行排序,


总共经过了

5-1=4


轮,


而每一轮中比较的次数也

< br>不相同,第一轮


2



3



4



5


号元素参与跟


1


号元素的比较,共

< br>4


次,第二轮


3



4



5


号元


素参与跟


2


号元素的比较,共


3


次,以次类推,比较次数逐步减少。经过四轮的比较,利用


逐 步求最小值的方法将


5


个数从小到大排好序。

< br>对于这样一个排序的过程,


我们可以使用两


个循环分别控 制比较的轮数和每一轮的次数。



程序代码:



Private Sub Command1_Click()


Dim n As Integer


n = InputBox(


请输入数组元素的个数:



Dim a() As Integer, i As Integer, j As Integer


Print


排序前:



ReDim a(n)


For i = 1 To n


a(i) = Int(Rnd * (99 - 10 + 1) + 10)


Print a(i);


Next i


For i = 1 To n - 1


For j = i To n


If a(i) > a(j) Then


temp = a(i) '


交换元素



a(i) = a(j)


a(j) = temp


End If


Next j


Next i


Print


Print


排序后


:


For i = 1 To n


Print a(i);


Next i


End Sub



2


)冒泡法排序


算法说明:


相邻的元素进行比较,


如果前面的元素比后面的 元素大,


则将它们进行交换,


具体思路:设在数组


a


中存放


n


个元素,第一轮 ,将


a(1)



a(2)


进行比较,若


a(1)>a(2),


则交换这两个元 素的值,然后继续用


a(2)



a(3 )


比较,若


a(1)>a(2)


,则交 换这两个元素


的值,


以此类推,


直到< /p>


a(n-1)



a(n)


进行比较处理后,


a(n)


中就存放了


n


个数中最大的值;


第二轮,用


a(1)



a(2),a(2)


与< /p>


a(3),



,a(n-2)

< p>


a(n-1)


进行比较,处理方法相同,这一< /p>


轮下来,


a(n-1)


中存放

< p>
n


个数中第二大的值;…;第


n-1


轮,


a(1)



a(2)< /p>


进行比较处理,


确保最小值在


a(1)< /p>


中。经过


n-1


轮比较处理,

< p>
n


个数已经按从小到大的顺序排列好。



下面我们以图形的形式体现对


5


个数进行冒泡排 序的过程:



第一轮:




2


2


6


2


2



4


4


2


6


4



1


1


4


4


6



6


5


最大值



1


1


1



第二轮:



5


6


5


5


5



2


2


2


2



4


4


1


1



1


1


4


4



5


5


5


5



6


6


6


6





第三轮:











第四轮:




1


1


1


1


2



2


2


2


2


1



4


4


4


4


4



5


5


5


5


5



6


6


6


6


6



程序代码:



Private Sub Command1_Click()


Dim n As Integer


n = InputBox(


请输入数组元素的个数:



Dim a() As Integer, i As Integer, j As Integer


Print


排序前:



ReDim a(n)


For i = 1 To n


a(i) = Int(Rnd * (99 - 10 + 1) + 10)


Print a(i);


Next i


For i = 1 To n - 1


For j = 1 To n - i


If a(j) > a(j + 1) Then '


相邻元素比较



temp = a(j)


a(j) = a(j + 1)


a(j + 1) = temp


End If


Next j


Next i


Print


Print


排序后


:


For i = 1 To n


Print a(i);


Next i


End Sub


2


、实战练习



1


)填程序一



算法说明:


C


盘根目录下的数据文件



中有两组数据,第一组数据未排


序,


并 以


-1


表示该组数据结束;


第二组数据 按从小到大顺序排列。


下面程序的功


能是,

单击


“读入数据”


按钮,


将文件中 的两组数据,


分别读入到


A



B


数组中,


单击“插入排序”按钮,则把


A


数组的元素按其大小依次插入到


B


数组的适当


位置,使得


B


数组中元素仍为从小到大排列。完善程序,实现以上功能。



-


-


-


-


-


-


-


-



本文更新与2021-02-28 09:39,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/680081.html

(完整版)VB常用算法——排序的相关文章

  • 余华爱情经典语录,余华爱情句子

    余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,

    语文
  • 心情低落的图片压抑,心情低落的图片发朋友圈

    心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得

    语文
  • 经典古训100句图片大全,古训名言警句

    古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事

    语文
  • 关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅

    鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而

    语文
  • 三国群英单机版手游礼包码,三国群英手机单机版攻略

    三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,

    语文
  • 不收费的情感挽回专家电话,情感挽回免费咨询

    免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。

    语文