资源简介 (共23张PPT)排序算法——冒泡排序元旦晚会中,“五行”5人小组预排演歌舞,节目阵型依据身高共会产生3套变化,在前期准备中,组长A需要先对组中5人依据身高数据进行从低到高的排队。A?常见的排序算法有:冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、桶排序……其中,冒泡排序如何实现?冒泡排序概念理解1阅读书本129页,请简述冒泡排序原理尝试演练2A冒泡排序是在一系列数据中对相邻两个数依次进行比较和调整,让较大的数“下沉(上冒)”,较小的数“上冒(下沉)”冒泡排序AA经过这一遍加工后,你能得出什么结论?冒泡排序的特点冒泡排序从前往后依次对比和调整后,后方逐渐有序方向有序每一遍加工使得一个数据一定有序所以n个数据经过n-1遍加工就完全有序加工遍数有比较不一定有交换比较次数固定,交换次数不一定比较与交换发现冒泡排序(一遍)程序实现数据的存储:数组(连续)、链表(不连续)数据的指向与表示数据的比较与处理用d数组存储身高数据用d[0]表示第一人身高d[1]表示第二人身高d[2]表示第三人身高……还能怎么表示?将d[j]与d[j+1]进行比较用d[j]表示第j+1人身高确定数据加工遍数确定每一遍加工的范围冒泡排序(一遍)178 172 183 169 173djif d[j]>d[j+1]:d[j],d[j+1]=d[j+1],d[j]for j in range( ):0,len(d)第一遍完成后,数据是:172 178 169 173 183j在第二遍加工中如何变化?-1for i in range(1, ):-ilen(d)相邻两数进行比较与要求不符,即交换练一练在d数据为:178,172,183,169,173的情况下:1、请完整写出这5个数据冒泡排序每一遍加工的结果2、请计算这5个数据在冒泡排序时的比较次数和交换次数想一想、改一改for i in range(1,len(d)):for j in range(0,len(d)-i):if d[j]>d[j+1]:d[j],d[j+1]=d[j+1],d[j]1、若希望从大到小(高到低)排序,程序应如何修改?2、若从后往前实现冒泡,程序应如何修改?小结确定数据加工遍数确定每一遍加工的范围相邻两数进行比较与要求不符,即交换1、n个数据,执行n-1遍加工即有序2、n个数据,冒泡排序执行n*(n-1)/2次比较,交换次数随数据情况而定3、冒泡排序的时间复杂度是O(n**2)4、会描述冒泡排序每一遍加工结果PPT模板下载:www./moban/ 行业PPT模板:www./hangye/节日PPT模板:www./jieri/ PPT素材下载:www./sucai/PPT背景图片:www./beijing/ PPT图表下载:www./tubiao/优秀PPT下载:www./xiazai/ PPT教程: www./powerpoint/Word教程: www./word/ Excel教程:www./excel/资料下载:www./ziliao/ PPT课件下载:www./kejian/范文下载:www./fanwen/ 试卷下载:www./shiti/教案下载:www./jiaoan/字体下载:www./ziti/作业:1、完成5.5的A2、冒泡排序是否有优化方式排序算法——冒泡排序的优化写一写请完整写出n个数据从前往后实现升序的冒泡排序算法确定数据加工遍数确定每一遍加工的范围相邻两数进行比较与要求不符,即交换for i in range(1,len(d)):for j in range(0,len(d)-i):if d[j]>d[j+1]:d[j],d[j+1]=d[j+1],d[j]如何让计算机知道数据有序?数据不完全有序,但部分有序,如何优化双向冒泡是否能提高效率你还有其他优化方案吗?你有哪些优化方案?优化遍数for i in range(1,len(d)):for j in range(0,len(d)-i):if d[j]>d[j+1]:d[j],d[j+1]=d[j+1],d[j]?应如何修改代码如何让计算机知道数据已经有序?当没有交换再发生时,数据有序(本遍加工交换次数为0)统计交换次数,做交换次数为0的判断优化遍数for i in range(1,len(d)):c=0for j in range(0,len(d)-i):if d[j]>d[j+1]:c+=1d[j],d[j+1]=d[j+1],d[j]if c==0:break更新每一遍中交换次数的存储变量用于统计每一遍中交换的次数判断数据是否已经有序练一练有如下Python程序段:d=[173,172,169,178,183]for i in range(1,len(d)):c=0for j in range(0,len(d)-i):if d[j]>d[j+1]:c+=1;d[j],d[j+1]=d[j+1],d[j]if c==0:breakprint (i)则程序运行之后,i的值为( )A. 1 B. 2 C. 3 D. 4注意:此优化会在人观察到有序后再做一遍!(不超过n-1遍)C优化范围for i in range(1,len(d)):c=0for j in range(0,len(d)-i):if d[j]>d[j+1]:c+=1;d[j],d[j+1]=d[j+1],d[j]if c==0:break?应如何修改代码当数据部分有序如何优化范围明确范围(如果没有交换再发生,则可确定部分有序)修改j的范围优化范围last=len(d)-1for i in range(1,len(d)):c=0for j in range(0,last):if d[j]>d[j+1]:c+=1;d[j],d[j+1]=d[j+1],d[j]last=jif c==0:break赋初值用于更新待比较范围练一练有如下Python程序段:d=[173,172,169,178,183]last=len(d)-1;s=0for i in range(1,len(d)):c=0for j in range(0,last):s+=1if d[j]>d[j+1]:c+=1d[j],d[j+1]=d[j+1],d[j]last=jif c==0:breakprint (s)则程序运行之后,s的值为( )A. 10 B. 8 C. 6 D. 5D列表格还原比较过程!继续思考冒泡变式去重排序问题在比较时有操作!……重要的是把握变量作用奇偶排序问题并非相邻两数比较!双向冒泡问题控制j的变化!PPT模板下载:www./moban/ 行业PPT模板:www./hangye/节日PPT模板:www./jieri/ PPT素材下载:www./sucai/PPT背景图片:www./beijing/ PPT图表下载:www./tubiao/优秀PPT下载:www./xiazai/ PPT教程: www./powerpoint/Word教程: www./word/ Excel教程:www./excel/资料下载:www./ziliao/ PPT课件下载:www./kejian/范文下载:www./fanwen/ 试卷下载:www./shiti/教案下载:www./jiaoan/字体下载:www./ziti/作业:1、完成5.5的BPPT模板下载:www./moban/ 行业PPT模板:www./hangye/节日PPT模板:www./jieri/ PPT素材下载:www./sucai/PPT背景图片:www./beijing/ PPT图表下载:www./tubiao/优秀PPT下载:www./xiazai/ PPT教程: www./powerpoint/Word教程: www./word/ Excel教程:www./excel/资料下载:www./ziliao/ PPT课件下载:www./kejian/范文下载:www./fanwen/ 试卷下载:www./shiti/教案下载:www./jiaoan/字体下载:www./ziti/谢谢! 展开更多...... 收起↑ 资源预览