题目要求:
编写函数,用二分法在有序列表中查找元素,找到则返回下标,找不到则返回-1。编写主程序,输入列表元素,调用第2题的函数排序,输入一个数,调用本题的函数查找。列表输入一次,查找可输入多次。尝试用递归实现
题目解析:
首先,要搞清楚什么是二分查找法。其次,要搞清楚什么是递归。二分查找法只对有序的数据有效。二分查找法天然地蕴含了递归的思想。了解二分法的基本思想可参考博客
代码:
'''
编写函数,用二分法在有序列表中查找元素,
找到则返回下标,找不到则返回-1。
编写主程序,输入列表元素,调用第2题的函数排序,输入一个数,
调用本题的函数查找。列表输入一次,查找可输入多次。尝试用递归实现
written by tyb
2020/10/20
references:https://www.runoob.com/python3/python-binary-search.html
'''
from Lab43 import selectionSort,inputList
# 返回 x 在 arr 中的索引,如果不存在返回 -1
def binarySearch(arr, l, r, x):
# 基本判断
if r >= l:
mid = int(l + (r - l) / 2)
# 元素整好的中间位置
if arr[mid