资源简介 (共28张PPT)5.3.1 数据排序(第一课时)单击此处添加副标题思考1:什么是排序?一、排序的概念排序就是整理数据的序列,使其中元素按照某个值的递增(或递减)的次序重新排列的操作。在排序的过程中,数据元素的值保持不变,但其在序列中的顺序可能发生变化。思考2:怎么排序?二、数据的组织形式 (以Python语言环境为例)待排序数据的存储方式一般有两种:(1)以数组作为存储结构将数据依次存放在一组地址连续的存储单元中,通过关键字之间的比较判断,将数据移到合适的位置进行物理重排(2)以链表作为存储结构对链表进行排序无须移动数据,比较判断后,只修改指针即可。待排序数据的存储方式一般有两种:(1)以数组作为存储结构将数据依次存放在一组地址连续的存储单元中,通过关键字之间的比较判断,将数据移到合适的位置进行物理重排(2)以链表作为存储结构对链表进行排序无须移动数据,比较判断后,只修改指针即可。二、数据的组织形式 (以Python语言环境为例)思考3:数组的排序如何实现?三、Python中的排序函数1.内建函数sorted():返回一个新序列,而原序列依然存在2.列表自带的sort方法:直接对列表排序,不产生新序列以a=[23,20,13,18,14,11]为例三、Python中的排序函数>>>a.sort( )>>>print(a)>>>a.sort(reverse=True) #reverse=True实现降序排序>>>print(a)>>>b=sorted(a)>>>print(b)>>>print(a)以a=[23,20,13,18,14,11]为例[11,13,14,18,20,23][23,20,13,18,14,11][11,13,14,18,20,23][23,20,18,14,13,11]知其然知其所以然1.内建函数sorted():返回一个新序列,而原序列依然存在2.列表自带的sort方法:直接对列表排序,不产生新序列四、常见的排序算法思考4: 若请你设计一个实现排序的算法,你会如何设计?冒泡排序出处:十大经典排序算法 https:///onepixel/articles/7674659.html四、常见的排序算法选择排序出处:十大经典排序算法 https:///onepixel/articles/7674659.html四、常见的排序算法插入排序出处:十大经典排序算法 https:///onepixel/articles/7674659.html四、常见的排序算法冒泡排序、选择排序、插入排序、快速排序、堆排序、归并排序、桶排序……出处:十大经典排序算法 https:///onepixel/articles/7674659.html五、冒泡排序算法及其程序实现算法思想:在一系列数据中对相邻两个数依次进行比较和调整,让较大的数“下沉(或上冒)”,较小的数“上冒(或下沉)”的一种排序方法。前 后前 后前 后前 后五、冒泡排序算法及其程序实现232013181411a[5]a[4]a[3]a[2]a[1]a[0]202313181411201323181411201318231411201318142311201318141123①②③④⑤第一遍加工过程若将n个元素的数组看成是垂直堆放的一列数据(以从上往下比,将大数往下沉,实现升序排序为例)五、冒泡排序算法及其程序实现201318141123a[5]a[4]a[3]a[2]a[1]a[0]132018141123131820141123131814201123131814112023①②③④第二遍加工过程若将n个元素的数组看成是垂直堆放的一列数据(以从上往下比,将大数往下沉,实现升序排序为例)……五、冒泡排序算法及其程序实现131114182023a[5]a[4]a[3]a[2]a[1]a[0]111314182023①第五遍加工过程若将n个元素的数组看成是垂直堆放的一列数据(以从上往下比,将大数往下沉,实现升序排序为例)若要排序的数有6个,则需经过 遍加工1113141820235五、冒泡排序算法及其程序实现思考5:1.若要排序的数有n个,则需经过 遍加工2.对n个元素的数组,用冒泡排序算法排序时,共需比较:3.其时间复杂度为:n-1(n-1)+(n-2)+…+1=(次)O(n2)五、冒泡排序算法及其程序实现排序过程中,按下面的方式使用变量i和j:i:记录正进行的处理遍数( )j:记录当前比较元素的下标( )a[5]a[4]a[3]a[2]a[1]a[0]jj+1i=1i=3i=2i=4i=51 n-10 n-i-1j0n-2j0n-3五、冒泡排序算法及其程序实现开始是j<n-i i≤n-1 是d[j]>d[j+1] i i+1否交换d[j]和d[j+1]否是输出结果结束否i 1j 0j j+1流程图:五、冒泡排序算法及其程序实现程序代码实现:def bubble_sort(a):n=len(a)#序列长度为n,需要执行n-1遍加工for i in range(1, n):for j in range( 0 , n-i ):if a[j] > a[j+1]:a[j],a[j+1]=a[j+1], a[j]思考6:若要实现降序排序,如何修改代码?<思考7:若从后往前加工,如何修改代码?无序区有序区无序区有序区课堂小结:1.排序的概念2.Python中的排序函数3.常见的排序算法4.冒泡排序的算法过程及代码实现评分项 自我评价理解排序的基本概念 5 4 3 2 1掌握Python中的排序函数 5 4 3 2 1能够了解常见的排序算法 5 4 3 2 1初步掌握冒泡排序的算法过程及代码实现 5 4 3 2 1学习评价:对自己的表现进行客观的评价,并思考后续完善的方向。(5=优秀,4=超出一般水平,3=满意,2=有待改进,1=不太理想)同学们,再见!单击此处添加副标题 展开更多...... 收起↑ 资源预览