将20个数存放在一个数组中,首先使用选择法或冒泡法对这 20个数按升序排列,并输出排序后的结果;然后从键盘输入一个 数,要求用二分查找(也称折半查找,Binary Search)的方法找 出该数在数组中的位置(即下标),如果该数不在数组中,则输 出"无此数”。
时间: 2024-11-27 09:20:51 浏览: 15
python练习题 :用户任意输入10个整数到列表中,然后由大到小排列并输出。
在程序设计中,你可以采用以下步骤来实现这个功能:
1. **数组初始化和排序**:
- 首先,创建一个长度为20的整型数组,然后通过用户输入或者其他数据源填充20个数。
- 接着,可以使用选择排序(Selection Sort)或冒泡排序(Bubble Sort)算法对数组进行升序排列。选择排序每次遍历找到最小值并交换到当前位置,而冒泡排序则通过不断比较相邻元素交换位置,直到整个序列有序。
```python
# 使用冒泡排序为例
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
```
2. **二分查找**:
- 输入搜索的数值之后,编写二分查找函数。它接受排序好的数组、目标值以及数组的起始和结束索引作为参数。函数会反复将搜索区间减半,直到找到目标值或确定其不存在于数组内。
```python
def binary_search(arr, target, low, high):
if low > high:
return "无此数"
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search(arr, target, mid+1, high)
else:
return binary_search(arr, target, low, mid-1)
```
3. **完整流程**:
- 对数组进行排序。
- 调用二分查找函数并打印结果。
```python
arr = [...initially filled with 20 numbers...] # 用户输入或初始数据
bubble_sort(arr)
num_to_find = int(input("请输入一个数:"))
position = binary_search(arr, num_to_find, 0, len(arr)-1)
if position != "无此数":
print(f"该数在数组中的位置是 {position}")
else:
print("无此数")
```
阅读全文