专题11 排序算法 学案(含解析)2025届高中信息技术.DOCXVIP

专题11 排序算法 学案(含解析)2025届高中信息技术.DOCX

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

专题11排序算法

学习目标

1.了解冒泡排序本质是相邻两个数进行比较和交换,让较大的数“下沉(上冒)”,较小的数“上冒(下沉)”的一种排序技术;

2.写出每趟排序的结果,掌握每趟的比较次数、每趟的排序区间和每趟排序实现的功能;

3.列出排序序列中的逆序对,掌握总共需要的交换次数;

4.外循环实现排序的趟数,内循环决定排序的方向和区间,比较条件决定排序的方式;

5.根据外循环变量i,画出待排序区间,在待排序区间的两端写出4个比较的位置,从而确定内循环的初始和结束位置.

冒泡排序的特征是相邻两个对象进行比较和交换,可以从前往后冒泡,实现后面数据先有序,也可以从后往前冒泡,实现前面数据先有序。当某趟排序过程中没有发生数据交换,表示整个序列数据有序,可以提前结束排序。冒泡排序可以用双重循环来实现,其算法复杂度为O(n2),外循环表示循环的趟数,内循环实现第i趟排序的方向和区间,比较语句实现了升降序的方式。

(2023年6月浙江省选考)列表s包含8个互不相等的元素,即s[0],s[1],s[2],……,s[7],有如下Python程序段:

n=8

foriinrange(1,n-1):

forjinrange(1,n-i-1):

ifs[j]s[j-1]:

s[j],s[j-1]=s[j-1],s[j]

该程序段实现的是()

A.s[0]到s[5]的降序排列 B.s[1]到s[6]的降序排列

C.s[1]到s[7]的升序排列 D.s[2]到s[6]的升序排列

重难点1冒泡排序的算法思想

从前往后冒泡,实现后面数据先有序,也可以从后往前冒泡,实现前面数据先有序。排序往往先找出一列数中的最值,将这个最值交换到该列数的末端,把数列划分为有序区间和无序区间,把这个操作称为一趟排序。再对无序区间进行重复操作,不断地扩大有序区间,缩小无序区间,当无序区间中只有一个数据时,全部数据有序,结束排序。排序基本算法思想是迭代执行一趟排序,直到数据全部有序。内循环的步长为正数,表示从前往后冒泡,负数表示从后往前冒泡,步长大于1,表示对局部数据进行排序。外循环次数决定排序的趟数,n个数据最多需要n-1趟排序,实现全部数据有序。内循环的初值和终值决定待排序(无序)区间的两个端点。

例1有如下Python程序段:

s=[2,3,8,7,5]

foriinrange(len(s)-1):

forjinrange(len(s)-1,i,-1):

ifs[j]s[j-1]:

eq\x(s[j],s[j-1]=s[j-1],s[j])

执行该程序段,加框处语句被执行的次数是()

A.3 B.6 C.8 D.10

变式1某Python程序如下:

s=[2,3,4,9,7,8,5]

n=len(s)

foriinrange(n-1):

forjinrange(n-1,i,-1):

ifs[j]s[j-1]:

s[j],s[j-1]=s[j-1],s[j]

下列说法正确的是()

A.整个加工过程总的交换次数为21

B.该程序段执行后,s的值为[9,8,7,5,4,3,2]

C.若s的初始值已有序,则该算法的时间复杂度为O(1)

D.每一遍加工中,最小的元素“上浮”

例2列表lst中共有n个整数,若下列程序段实现将数组元素lst[st]至lst[ed]升序排列,则划线处的代码为()

foriinrange(st,ed):

forjinrange(st,________):

iflst[j]lst[j+1]:

lst[j],lst[j+1]=lst[j+1],lst[j]

A.n-i B.ed-i

C.ed+st-i D.st+ed

变式2数组L长度为n,要实现数组元素L[a]至L[b]升序排列(0≤ab≤n-1),其余元素的位置不变,实现相应功能的程序段如下:

foriinrange(0,b-a):

forjinrange(eq\x(b-1,a-1,-1)):

ifL[j]L[j-1]:

L[j],L[j-1]=L[j-1],L[j]

加框处代码在测试程序时发现有误,可修改为()

A.range(a,b-1) B.range(b,a-i,-1)

C.range(b,a+i,-1) D.range(a-i+1,b)

重难点2冒泡排序的变式

外循环次数决定排序的趟数,从前往后冒泡,则后面部分数据有序,从后往前冒泡,则前面部分数据有序。利用这一特性,可以筛选达到要求的数

您可能关注的文档

文档评论(0)

中小学教学资料 + 关注
实名认证
服务提供商

提供小学、初中、高中信息科技教案、试卷、课件等优质教学资源

1亿VIP精品文档

相关文档