itto49个详细过程 - 第六版 (过程组排序)_信息科技 高一年级 第二学期 第五单元 排序与查找 第3课 选择排序的描述...

c300549da73d1f623a74872fe5cf9371.png

信息科技 高一年级 第二学期

第五单元 排序与查找

第3课 选择排序的描述

a9d3c660a3301147d230c5a565a4d001.png

知 识 结 构

07ce8691d49cee5bb6e04d3c0839e50d.png

要 点 归 纳

一、选择排序的算法描述

以规模为4的数组d完成非递减排序为例:

9004aa99078434766f6e866acbfc8aa9.png

b890b8c875c8bffa448f8205e452abad.png

根据选择排序的基本思想,可使用循环嵌套循环的算法结构。

(1)选择排序是重复执行“每遍加工”的过程,可以用循环结构实现。

(2)每一遍加工的过程都包含了“在待排序数据范围内找最值”和“将最值和首元素进行交换”这两个步骤。

5c387ab523cd543de87ab68d148b0092.png

6e2d206bb40a245c85b97286401e25f0.png

1. 重复执行“每遍加工”的过程,使用循环结构实现。

数组d规模为4,共需执行3遍加工,设置变量i控制循环执行3次。

e6c864bf2548471e4647ea5527af0dd3.png

根据选择排序的执行过程,可以归纳出变量i的作用有:

1)计数器,循环控制变量,记录加工遍数(i=1,2,3)

2)记录每遍加工时待排序范围内第1个元素的下标

由此可归纳“第i遍加工”的过程为:在待排序数组元素d[i]~d[4]范围内找出值最小的元素,并将该元素的值与d[i]的值交换。上述流程图改写为:

8111bacef0fec6e04bea22512db7938b.png

6e2d206bb40a245c85b97286401e25f0.png

2.每一遍加工过程,使用循环嵌套分支结构实现。

① 找最值可以用“擂台法”来实现,其中循环结构实现数据的逐个罗列,分支结构实现数据的两两比较。

d[i]~d[4]为每一遍加工时待排序数组元素的范围。根据擂台法的算法思想,在每一遍加工过程中先将待排序范围内的第一个数组元素d[i]设为擂主,d[i+1]~d[4](攻擂者)依次与擂主比较。这里设置变量j,表示攻擂者下标。

根据待排序数据范围内找最值的过程,可以归纳出变量j的作用有:

1)计数器,循环控制变量;初值为i+1,终值为4

2)记录每遍加工时与当前最小值比较的数组元素(攻擂者)的下标(j=i+1,……,4)

根据上述算法描述,两数比较(即打擂)时,如果将产生的擂主赋值给min变量,虽然能记录最小值,但并未记录其所在位置,所以无法进行数据元素的互换。因此在寻找最值的过程中,通过记录最小值的下标,找出最小值以及它所在的位置,此处用变量k记录每遍加工时最小值(擂主)的下标(k的初值为i),d[k]即为d[i]~d[4]范围内值最小的元素。

cce947f7e576a8f41b1e6daabc5eacfc.png

② 两数交换可以引入第三个变量作为中间变量,用顺序结构来实现。

1aeb1f9552604552661581be99f444a0.png

6e2d206bb40a245c85b97286401e25f0.png

3. 选择排序的流程图描述

ef5b246108039e3bbcba1be5697c0e66.png

二、排序算法拓展学习 (以非递减次序排序为例)

6e2d206bb40a245c85b97286401e25f0.png

1.冒泡排序

(1)

动画演示

(2)

基本思想

冒泡排序是一种直接交换的排序方法,在这里,冒泡排序算法把待排序的n个元素的数组看成是垂直堆放的一列数据,从最下面的一个元素起,自下而上地比较相邻的两个元素中的数据,将数值较小的数据换到上面的一个元素中。重复这一过程,直到处理完最后两个元素中的数据,称为一遍加工,当第一遍加工完成时,最小的数据已经上升到第一个元素的位置。然后对余下的n-1个元素重复上述处理过程,直至最后进行余下两个数据的比较和交换。由于每一遍加工都是将本遍最小的元素像气泡一样上浮至本遍的顶端位置,故称为冒泡排序。

6e2d206bb40a245c85b97286401e25f0.png

2.快速排序

(1)

动画演示

(2)

基本思想

快速排序是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对这两部分数据分别进行快速排序。同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快速排序在每一轮挑选一个基准元素(P),并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分。

动画演示中,L和R代表搜索起始的位置。从L开始向后搜索,找到第一个大于A[P]的值A[L],从R开始向前搜索,即由后开始向前搜索,找到第一个小于A[P]的值A[R],将A[R]和A[L]的值交换。若搜索的过程中L和R移动到相同的位置,则A[L]和A[P]互换。 6e2d206bb40a245c85b97286401e25f0.png

3.插入排序

(1)

动画演示

67b45b6d346f55ea43cb8a494c4e8741.gif

(2)

基本思想

对于少量元素的排序,它是一个有效的算法。它的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)。

6e2d206bb40a245c85b97286401e25f0.png

4.归并排序

(1)

动画演示

f795d379e9fc4cfdefef2d68f92a335f.gif

(2)

基本思想

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。分治法将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之。归并排序的执行过程:将待排序的线性表不断地切分成若干个子表,直到每个子表只包含一个元素,这时,可以认为只包含一个元素的子表是有序表。然后将子表两两合并,每合并一次,就会产生一个新的且更长的有序表,重复这一步骤,直到最后只剩下一个子表,这个子表就是排好序的线性表。

习 题 解 析

3ce19bcd4bd95199f2dce94404b9c68c.gif

aedc3f3cc60cd99f68474502f7031f56.png

撰稿、视频:五十二中学 潘晓蔚

审核:虹口区高中信息科技中心组

编辑制作:澄衷初级 顾小雨

f2b95d8c2ff196565e775d676a4b63eb.png

KODU沙龙

d125721d9bf88c1140b6976145636280.png

为了进一步落实上海市教委关于做好疫情防控期间本市中小学在线教学工作的指导意见,做好防疫期间“停课不停教、不停学”,虹口区中学信息科技学科组,充分发挥“互联网+教育”的作用,在特殊时期积极构建网课相关的教学资源,该资源秉持不额外增加学习负担的原则,供师生个性学习选用

您可以在“空中教学(中预/高一)”菜单中查看此次网课全部资源。您也可以使用关键词“网课”或“2020”,打开网课专题页面。

推文内容的版权归“KODU沙龙”所有,仅供学习使用,转载需注明出处。

8426120651baac24be447fa899211835.gif 7390e4ceb69ca915de4d710fbd3e40f8.png b63e125576d6c9c668a2431cac423ea3.png 8b1ebf63f3380a44a3a0c6206c628b1a.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值