欢迎来到天天文库
浏览记录
ID:62118198
大小:406.50 KB
页数:23页
时间:2021-04-17
《VB教程——排序算法复习.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、排序问题1、冒泡法(起泡法)2、顺序交换法3、选择法4、插入法1、冒泡法首先我们来看把最大的那个数放在最后位置上的方法:假设有5个数,分别为10,2,6,7,4,存放在a(1)-a(5)中。首先,从a(1)到a(5),相邻的两数两两进行比较,在每次比较过程中,若前一个数比后一个数大,则交换两元素的内容。第一轮的比较过程:forj=1to4ifa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndifNextj1、冒泡法现在重复上述算法:把a(1)到a(4)中的最大数放在a(4)中,a(1)到a(3)中的最大数放在a(3
2、)中,a(1)与a(2)中的最大数放在a(2)中。这样一共经过4次选大就把a(1)到a(5)中的数进行由小到大排序。在排序过程中小数象气泡一样上浮,而大数逐个下沉,所以叫起泡法。第1轮:forj=1to4ifa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndifNextj第2轮:forj=1to3ifa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndifNextj第3轮:forj=1to2ifa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=t
3、EndifNextj第4轮:forj=1to1ifa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndifNextj第i轮:forj=1to5-iifa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndifNextjFori=1to4Nexti1.冒泡法冒泡法程序清单:Dima(1To5)AsIntegerFori=1To5a(i)=Val(InputBox("输入一个数"))NextiFori=1to4Forj=1To5-iifa(j)>a(j+1)Thent=a(j):a(j
4、)=a(j+1):a(j+1)=tEndifNextjNextiFori=1To5Printa(i);Nexti冒泡排序思考:如果这5个数是2,4,6,7,10,简述程序执行流程。1.冒泡法改进算法:Dima(1To5)AsIntegerFori=1To5a(i)=Val(InputBox("输入一个数"))NextiFori=1to4flag=0Forj=1To5-iifa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=t:flag=1EndifNextjIfflag=0ThenExitForNextiFori=1To5
5、Printa(i);Nexti1.冒泡法对已知存放在数组中的n个数,用冒泡法按递增顺序排序。(1)从第一个元素开始,将相邻的数比较,若为逆序,就交换,比较完一轮,最大的数已沉底,成为数组中的最后一个元素a(n)(2)对a(1)和a(n-1)的n-1个数进行同(1)的操作,次大的数放入a(n-1)中,完成第二轮排序。(3)进行n-1轮排序,所有的数排序完毕。1.冒泡法n个数冒泡法递增排序程序清单:Dima%(),i%,j%,n%n=InputBox("请输入一个正整数")ReDima(1Ton)Fori=1Tona(i)=Int(Rnd*100):Prin
6、ta(i);NextiFori=1Ton-1Forj=1Ton-iIfa(j)>a(j+1)Thent=a(j):a(j)=a(j+1):a(j+1)=tEndIfNextjNextiPrintFori=1TonPrinta(i);Nexti2、顺序交换法我们再来看一种将最小的数放在第一个位置的算法先设定用a(1)存放最小值,然后用a(1)分别与其后的每一个数a(j)(j=2..5)进行比较,在比较过程中如果a(1)不是小的数,就将a(1)与a(j)互换。第一轮的比较过程Forj=2To5if(a(1)>a(j))Thent=a(1):a(1)=a(j)
7、:a(j)=tEndifNextj2、顺序交换法现在重复上述算法:把a(2)到a(5)中的最小数放在a(2)中,a(3)到a(5)中的最小数放在a(3)中,a(4)与a(5)中的最小数放在a(4)中。这样一共经过4次选小就把a(1)到a(5)中的数进行由小到大排序。第1轮:forj=2to5ifa(1)>a(j)Thent=a(1):a(1)=a(j):a(j)=tEndifNextj第2轮:forj=3to5ifa(2)>a(j)Thent=a(2):a(2)=a(j):a(j)=tEndifNextj第3轮:forj=4to5ifa(3)>a(j)T
8、hent=a(3):a(3)=a(j):a(j)=tEndifNextj第4轮:
此文档下载收益归作者所有