修改二分查找法的递归程序(binarySearch.py),设法从命令行参数中荻 取测试列表的各元素以及所要查找的关键字def _binarySearch(key,a,io,hi): if hi <=io:return (-1) mid=(io+hi)//2 if a[mid]>key: return _binarySearch(key,a,io,mid) elif a[mid]<key: return _binarySearch(key,a,mid+1,hi) else: return mid def binarySearch(key,a): return _binarySearch(key,a,0,len(a)) #测试代码 def main(): a=[1,13,26,33,45,55,68,72,83,99] print("关键字位于列表索引",binarySearch(33,a)) print("关键字位于列表索引",binarySearch(58,a)) if __name__=='__main__':main()
时间: 2024-03-01 21:49:35 浏览: 64
以下是修改后的代码(binarySearch_updated.py),可以从命令行参数中获取测试列表和所要查找的关键字:
```python
import sys
def _binarySearch(key, a, io, hi):
if hi <= io:
return -1
mid = (io + hi) // 2
if a[mid] > key:
return _binarySearch(key, a, io, mid)
elif a[mid] < key:
return _binarySearch(key, a, mid + 1, hi)
else:
return mid
def binarySearch(key, a):
return _binarySearch(key, a, 0, len(a))
# 从命令行参数中获取测试列表和所要查找的关键字
test_list = list(map(int, sys.argv[1:-1]))
key = int(sys.argv[-1])
# 在测试列表中查找关键字
result = binarySearch(key, test_list)
if result != -1:
print(f"元素在索引{result}位置")
else:
print("元素不在列表中")
```
使用方法:
在命令行中输入以下命令:
```
python binarySearch_updated.py 1 2 3 4 5 6 7 8 9 10 5
```
其中,`1 2 3 4 5 6 7 8 9 10` 是测试列表的各元素,`5` 是所要查找的关键字。程序将输出:`元素在索引4位置`。
阅读全文