第二单元 排序算法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二单元 排序算法

技术 技术 第二单元 排序算法 夯实考点 考点1 冒泡排序 1.排序的含义及方式 (1)所谓排序就是将无序的数列变成有序的数列。 (2)排列方式有升序(也称递增,即从小到大排列)和降序(也称递减,即从大到小排列)两种。 2.冒泡排序 (1)冒泡排序基本思想 将n个数据看作竖向排列的一组数据,每趟排序自下而上对每对相邻数据进行比较,若次序不符合要求则进行交换。每趟排序结束时都能使排序范围内关键字最小(或最大)的数据像一个气泡一样升到上端的对应位置,依次将关键字最小、次小……的各个数据冒到数列的第一个、第二个、……、倒数第二个位置上。 用冒泡排序对n个数据进行排序时,共需进行n-1趟(遍)排序,比较的总次数为n×(n-1)/2。 (2)冒泡排序算法的基本框架   For i=1 To n-1′n个数据进行排序,共需进行n-1趟 ′第i趟排序:从第n个数到第i个数,依次比较相邻两个数,符合条件则进行 互换。   Next i (3)冒泡排序程序实现 对数组d中的n个数进行升序排序的程序为:  For i=1 To n-1 ′n个数排序共需进行n-1趟  For j=n To i+1 Step-1 ′每一趟排序均从最后往前,依次比较相邻两数     If d(j)d(j-1) Then′若后面的数比前面的小,则进行互换       temp=d(j)′变量temp是用于交换的中间变量       d(j)=d(j-1)       d(j-1)=temp     End If   Next j  Next i 【重难点剖析】 ①相邻两数分别用d(j)和d(j-1)来表示,第i趟排序时,j的位置变化为:n~i+1。第1趟排序时,j从n走到2,第2趟排序时,j从n走到3,因此可推得:第i趟排序时,j从n走到i+1; ②若要按降序排列,只需将程序中的语句“If d(j)d(j-1)Then”改为“If d(j)d(j-1)Then”即可。 典例1 某VB事件处理过程如下: Private Sub Command1_Click()  Dim a(1 To 8)As Integer,s As String Dim i As Integer,j As Integer,temp As Integer  a(1)=5:a(2)=8:a(3)=7:a(4)=3  a(5)=10:a(6)=20:a(7)=15:a(8)=1  s=  For i=1 To 2   For j=8 To i+1 Step-1     If a(j)a(j-1)Then       temp=a(j)︰a(j)=a(j-1)︰a(j-1)=temp     End If   Next j   s=s+Str(a(i))  Next i  Text1.Text=s End Sub 该事件处理过程代码执行后,在文本框Text1中显示的内容是(  ) A.13 B.31 C.15 20 D.20 15 解析:本题考查的是冒泡排序的算法实现。该程序的功能是对数据使用冒泡排序降序排序2遍,将每次得到的最大值存放在字符串s中。第一遍结束时,s的值为“20”,第二遍结束时,s的值为“20 15”,因此答案选D。 答案:D 典例2 6只西瓜的重量(单位:斤)分别是12.6,15.5,8.4,10.5,9.8,6.3,若采用冒泡排序算法对其进行升序排序,第2遍排序时数据交换的次数是(  ) A.0 B.1 C.2 D.3 解析:本题考查的是冒泡排序的实现过程。 冒泡排序的具体过程如下表所示: 6.3,8.4,12.6,15.5,9.8,10.5 第2遍 6.3,12.6,15.5,8.4,10.5,9.8 第1遍 12.6,15.5,8.4,10.5,9.8,6.3 原始数据 第i遍排序结束时的数据情况 第i遍 第2遍排序时,9.8与10.5交换1次,8.4与15.5,12.6交换2次,因此共交换3次,答案选D。 答案:D 典例3 (2015浙江省10月选考题)n个数据的冒泡排序需要经过n-1遍加工,每一遍加工自下而上比较相邻两个数据,把较小者交换到上面。小刘发现:当某一遍加工过程中没有数据交换,说明数据已经有序,无需进一步加工。为此,小刘对算法进行优化,编写了一个VB程序,功能如下:运行程序时,在列表框List1中显示排序前数据,单击“排序”按钮Command1,在列表框List2中显示这些数据按升序排序后的结果,在标签Label3中显示排序过程的加工遍数。运行效果如图2-1所示。 解析:本题主要考查的是冒泡排序的算法实现。n个数进行排序,共需进行n-1遍(趟)。若进行i遍后数据已经有序,则不需要再进行排序。排序结束的条件是:排序遍数小于n-1遍,且数据无序,因此(1)处的语句

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档