1、查找算法浙教 2003课标版 算法与程序设计 主 讲:浙江省岱山中学宋远良活动一 :问题探究问题 1:如何在别人的一大串没写标签的钥匙中找出一把锁的钥匙?问题 2:猜猜老师手中这本书的价格是多少?(价格为正整数,价格在 40以内)任务单 1.已知数组 d中存放了33.62.17.54.29.75.48,现在要查找 75,将如何查找 ?任务单 2.已知数组 a中存放了13.27.31.49.55.68,现在要查找 27,将如何查找 ?数组 d中存放的数据是无序的数据 ,只能从第一个开始向后依次向后查找 ,或从最后一个开始依次向前查找 .数组 a中存放的数据是有序的数据 ,能从第一个开始向后依次向
2、后查找 ,或从最后一个开始依次向前查找 ,还可以怎样查找呢 ?活动二 :任务单及分析算法思想 :顺序查找的 基本思想 :从第一个数据开始 ,按数列的顺序逐个将数据与给定的值进行比较 ,若某个数据和给定值相等 ,则查找成功 ,找到所查数据的位置 ;反之 ,查找不成功 .(1)利用 循环语句 (通常是 for)逐个 扫描 ;(2)在循环体内部利用 选择语句 (if)进行 比对 ;(3)若查找成功 ,可以直接结束循环 (Exit For).顺序查找算法的实现要点 :N开始结束输入要查找的数据 keyi 1in then 未找到 ,输出 0 顺序查找算法程序 的 基本框架:算法思想 :对分查找的 基本
3、思想 :又名二分查找,是一种高效的查找方法 ,前提是被查找的数据必须是 有序 的 .先将处于中间位置的数据 与 查找键 进行比较 ,若相等则查找成功 ;否则根据数组的有序性 判断要查找键在前半部分还是后半部分 ,然后 缩小范围 按以上方法继续查找 ,直至找到要查找的数据,或直到数据不存在 . ji mi mj j i m用对分查找在下列数组中查找任务单:在这个查找中, i的初值为, j的初值为 _,m第一次查找第个元素,一共比对了次 已知数组 a中存放了 13.27.31.49.55.68,现在要查找 27,利用对分查找的具体过程:(1)因比较次数不定 ,只能用 do语句 ,不能用 for语句;(2)在 do循环体中利用选择语句 (if)判断 是否查找成功 ;(3)若 查找成功 则输出查找结果,并提前结束循环 (Exit do).(4)若 查找不成功 ,则判断查找键在数组的前半部分还是后半部分,从而缩小范围对分查找算法的实现要点 :