36.统计高分问题 小张在学习对分查找后,想利用该思路来实践一下,加深对该算法的理解。于是他按老师的要求,统计期末考试成绩,总分比他高的同学有多少个? 他的思路是,首先将全区所有学生的成绩降序排序,然后利用对分查找思想解决。他编写的代码如下,请完善划线处的代码。 cj =[654,643,621,612,609,606,...]#学生成绩存列表cj并已经降序排序 def dfsearch(key): i =0; j=len(cj)-1 while i<=j: m =(i+j)//2 if cj[m]>key: ① else: j-= 1 return ② key = int(input('输入待查找的成绩')) pos = ③ print('高于',key,'分的人数有',pos)
使用微信搜索喵呜刷题,轻松应对考试!
答案:
1. ①处应填:i = m + 12. ②处应填:return j3. ③处应填:dfsearch(key)
```python cj =[654,643,621,612,609,606,...] #学生成绩存列表cj并已经降序排序 def dfsearch(key): i =0; j=len(cj)-1 while i<=j: m =(i+j)//2 if cj[m]>key: i = m + 1 # 如果中间位置的成绩大于key,将搜索范围缩小到m的右边 else: j-= 1 # 如果中间位置的成绩小于key,将搜索范围缩小到m的左边 return j # 最终返回j,即成绩大于key的最后一个位置,也就是成绩大于key的学生数量