排序算法及程序实现课件2.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《排序算法及程序实现课件2.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排序 算法 程序 实现 课件
- 资源描述:
-
1、排序算法及程序实现(2)2教材研读一排序算法的基本思想二排序算法的程序实现3重难突破突破一 冒泡排序的变形4教材研读知识梳理一、排序算法的基本思想通常被排序的数据是一批同类型数据,存储在具有适当规模的数组变量中。通过排序可以调整数据在数组变量中的存储位置,使数组内的数据呈现某种次序。5知识梳理(1)选择排序选择排序的基本思想是在所有的记录中选出最小(大)的数据,把它与第一个数据交换,然后在其余的记录中再选出最小(大)的数据与第二个数据交换。以此类推,直至所有数据排序完成。n 个数需要n-1 次加工(挑选最小或最大数然后进行交换)。6知识梳理以数据130,20,98,15,67,3 为例,从小到
2、大选择排序的过程如下:7原始数据130209815673第1遍排序后320981567130第2遍排序后315982067130第3遍排序后315209867130第4遍排序后315206798130第5遍排序后315206798130知识梳理(2)选择排序的代码如下:For i=1 To n-1k=iFor j=i+1 To nIf a(j)a(k)Then k=j Next j8知识梳理If ki Thentemp=a(i):a(i)=a(k):a(k)=tempEnd IfNext i9知识梳理说明:虚线框内代码用于寻找数组元素a(i)到a(n)的最小值,变量k记录当前找到的最小值的位置
3、,即数组元素的下标,则a(k)就是当前找到的最小的数组元素。它的思想方法是先假设数组的第i项是最小的(第i遍排序),因此k记为i,然后把从第i+1项开始的所有数组元素跟a(k)进行比较,如果比a(k)小,则用k记录该元素的下标。这样循环结束后,变量k中存储的就是数组中从第i项至第n项的最小元素的下标,a(k)就是第i项至第n项中的最小元素。从小到大排序时,If语句中条件表达式为:a(j)a(k)。10自我检测1.按日期先后整理一堆文件的算法是:第一次,在这叠文件中从上到下找出日期最早的文件反扣在桌面上;第二次从剩余文件中从上到下找出日期最早的文件反扣在第一次找出的文件上;第三次,从剩余文件中从
4、上到下找出日期最早的文件反扣在第二次找出的文件上;,依此类推,最后完成整理工作。此算法属于()A.选择排序B.对分查找C.递归算法D.冒泡排序11自我检测1.按日期先后整理一堆文件的算法是:第一次,在这叠文件中从上到下找出日期最早的文件反扣在桌面上;第二次从剩余文件中从上到下找出日期最早的文件反扣在第一次找出的文件上;第三次,从剩余文件中从上到下找出日期最早的文件反扣在第二次找出的文件上;,依此类推,最后完成整理工作。此算法属于(A)A.选择排序B.对分查找C.递归算法D.冒泡排序12自我检测解析本题主要考查选择排序的基本思想。选择排序的基本思想是从所有的记录中选出最大或最小的数据,把它与第一
5、个数据交换,然后在其余的记录中再选出最大或最小的数据与第二个数据交换。以此类推,直至所有数据排序完成。本题中解决问题的思想方法是选择排序的基本思想。13自我检测2.用选择排序法对一组学生的身高数据进行升序排序,已知第一遍排序结束后的数据序列为165,168,178,175,171,则下列选项中可能是原始数据序列的是()A.175,178,168,165,171B.178,168,165,175,171C.165,178,168,175,171D.165,168,171,175,17814自我检测2.用选择排序法对一组学生的身高数据进行升序排序,已知第一遍排序结束后的数据序列为165,168,1
6、78,175,171,则下列选项中可能是原始数据序列的是(B)A.175,178,168,165,171B.178,168,165,175,171C.165,178,168,175,171D.165,168,171,175,17815自我检测解析本题主要考查选择排序的基本思想。选择排序的基本思想是从所有的元素中选出最小(升序排序)的数据,把它与第一个数据交换,然后在其余的元素中再选出最小的数据与第二个数据交换。以此类推,直至所有数据排序完成。因此第一遍排序后排第一位的165有5种可能的来源,原来就在第一位,不需要数据互换,那么原始数据就是165,168,178,175,171;从第二位换来,那
7、么原始数据就是168,165,178,175,171;从第三位换来,那么原始数据就是178,168,165,175,171;从第四位换来,那么原始数据就是175,168,178,165,171;从第五位换来,那么原始数据就是171,168,178,175,165。1617重难突破突破选择排序的变形1.选择排序的变形:For i=1 To n-1k=iFor j=n To i+1 step-1If a(j)a(k)Then k=jNext j18突破选择排序的变形If ki Then temp=a(i):a(i)=a(k):a(k)=tempEnd IfNext i在每一遍找最小值时,从前往后的
8、比较改为从后往前的比较,其他没有变化。19突破选择排序的变形2.选择排序的错误变形:For i=1 To n-1k=iFor j=i+1 To nIf a(j)a(i)Then k=jNext jIf ki Then temp=a(i):a(i)=a(k):a(k)=tempEnd IfNext i20突破选择排序的变形错误原因分析:在选择最小值的过程中把第i+1到第n个数依次与a(i)比较,“If a(j)a(i)Then k=j”,如果a(j)比a(i)小,则用变量k记录j的位置,但是a(j)与a(i)并未交换。这种方法是找不到最小值的位置的。比如有如下数据:5 2 1 3 4,第一遍排序
9、i=1时比较过程如下:a(2)a(1),因此k=2;a(3)a(1),因此k=1;a(4)a(1),因此k=4;a(5)a(1),因此k=5。这一趟循环的结果是k=5,没有找到最小值所在的位置(最小值位置应该是3),原因就是a(1)的值没有变过。21突破选择排序的变形3.选择排序的优化在数组的所有元素中同时找出最小和最大的元素,然后将这两个元素分别与第一个和最后一个元素交换数据,在余下的元素中找出最小和最大数据的元素,分别与第二个和倒数第二个元素交换数据,以此类推,直到所有元素的数据按升序排列。代码如下:p=1:q=10Do While pqiMin=p:iMax=p22突破选择排序的变形Fo
10、r i=p+1 To qIf a(i)a(iMax)Then iMax=iNext it=a(iMin):a(iMin)=a(p):a(p)=tIf iMax=p Then iMax=iMint=a(iMax):a(iMax)=a(q):a(q)=tp=p+1q=q-1Loop23突破选择排序的变形思想解析:普通的选择排序是从头到尾一个方向的,优化后的排序是从两端往中间同时进行的,一端从小到大排,一端从大到小排,变量p和q表示本次排序的范围(p前和q后的数据已经完成排序)。FOR语句找出本次排序的最小数a(iMin)和最大数a(iMax),然后将a(iMin)与a(p)交换,将 a(iMax)
11、与a(q)交换。由于找最小数和最大数时,一开始都假定了p位置上的数是最小值和最大值,如果本次找到的最大值在p位置,那么当a(p)和a(iMin)交换以后,最大值a(p)就被换到iMin的位置。因此当iMax=p时,在最小值交换完毕后,再给iMax赋值iMin。24典型例题例3有如下VB程序段:a(l)=44:a(2)=36:a(3)=58:a(4)=65:a(5)=12b=0c=0For i=1 To 4k=iFor j=i+1 To 5If a(j)a(k)Then k=j:b=b+125典型例题Next jIf k i Thent=a(i):a(i)=a(k):a(k)=tc=c+1End
展开阅读全文