;;;;5;;;体检表上的编号1、2、3、…、7被称为序号,它是数据项目的编号,与数据值的大小没有直接关系。;第1步:翻开第一份体检表,第一位同学的身高为143cm,不符合要找的148cm,所以继续翻开下一份体检表。;第3步:重复上面的操作,直到翻开第5张体检表,第5位同学的身高为148cm,符合要求,完成查找。;;探索;;;探索;;1.使用自然语言、流程图描述查找旗手的过程
首先,我们用最简单的方法——自然语言,来描述查找旗手的过程:从第一份体检表开始,取出身高数据,与目标身高进行对比,如果不相等,就依次向后查找,直到查找到目标旗手为止。
请你使用流程图描述用顺序查找法查找旗手的步骤,在右图中填写空白部分。;2.编程查找旗手
下面用图形化编程软件编写程序,根据全班同学的身高数据找出身高为148cm的旗手。
(1)保存全班同学的身高数据。;在图形化编程软件中,新建名为“全班身高”的列表,如图所示。将文本文件中的列表数据复制并粘贴到“全班身高”列表中。;遍历“全班身高”列表数据。尝试通过“重复执行()次”积木,遍历列表数据,注意重复执行的次数要等于列表的长度,如图所示。;上面的代码将列表内的数据从头到尾进行了遍历,你能修改代码,让其实现当判断到列表中某个内容等于148时说出数据的编号并停止执行吗?;;;;;;29;;;在翻书时,书本的页码总是按顺序从小到大排列。我们可以通过不断翻到中间的页码,然后与目标页码进行比对,缩小查找范围,重复以上的操作,最终找到目标。
比如总页数为120页的书籍,要翻到第50页,我们可以先大概翻到中间的位置,如第60页左右;发现比第50大,于是再往前翻,翻到第30页左右,再依次大概翻到第45页、第52页、第48页,最后成功翻到第50页。
同理,在有序数列中,要想找到某个特定目标元素,可以通过将查找范围缩小一半,判断目标元素所在的位置,将目标元素所在的范围再次缩小一半,判断目标元素所在的位置……如此重复不断地缩小查找范围,直到找到目标元素。这样的方法就叫作二分查找。;探索;;在用顺序查找法查找旗手的过程中,如果老师给我们的??据是按照从小到大或者从大到小的顺序排列的,我们就可以用二分查找法来简化问题,从而实现快速查找。
为了方便演示,我们以10份排好顺序的数据为例,查找身高为148cm的同学。
第1步:将10份数据分为两部分,翻开5号体检表,发现其值为144,小于148,因此查找范围缩小至6号至10号体检表,如图所示。;第2步:将6号至10号体检表再次分为两个部分,翻开8号体检表,发现其值为147,仍然小于148。查找范围再次缩小至9号至10号体检表,如图所示。;第3步:还剩下2份体检表,翻开9号体检表,其值等于目标数据148,查找结束,9号体检表中的身高符合旗手的身高要求,如图所示。;二分查找的原理就是在有序数组中,通过不断将查找区间一分为二,比较中间元素与目标数据,再根据比较结果调整查找区间,直至找到目标数据。
二分查找的最坏情况是每次查找都未能找到目标数据,每次将搜索范围缩小一半,直到搜索范围为空或只剩下一个元素时才停止。如果有n个元素,每次查找的元素数量除以2,直到元素数量等于1,查找结束。;要想将一条纸带均匀分为64个小格子,只需连续对折6次,展开后即可得到64个大小相等的小格子。
像二分查找、折纸带这样,将复杂的问题分解为较小的子问题,再分别解决这些子问题,最后将子问题合并解决原问题的策略也叫作分治法。;探索;;;;在猜数字游戏中,如果要猜中100以内的一个整数的概率是百分之一,假如利用二分查找的原理来猜,猜中的概率就会大幅提升。
猜数字游戏小程序如图1.2.6所示,具体规则是:生成一个1至100的随机数,当猜数字的同学输入答案后,系统会自动判断输入的数是否正确,不正确的话是大了,还是小了,并给出相应的提示。参与者根据提示继续猜,直到猜对为止。和你的同学一起试试吧!;探索;请打开图形化编程软件,参照图,用二分查找原理编程实现猜数字游戏吧!;;;;;;52;;;冒泡排序的基本思想是通过比较相邻两个元素,根据比较结果和算法规则,对这两个元素的位置进行交换。这样依次进行比较和交换,就能达到排序的目的。
由于这种方法在排序的过程中总是把小的数往下放,大的数往上放,就像水沸腾时气泡往上升会变大一样,所以叫作冒泡排序。;现在,有6个从下往上无序排列的数据泡泡:“12,1,27,19,30,8”。让我们来具体看看是怎样通过交换位置进行冒泡排序的吧。;探索;;在每一轮排序后,都记录下最后一次元素交换的位置,