请用python语言编写以下程序: 1.递归二分检索(要求:注释解释每一步算法;显示检索结果,每次检索中间值,以及检索次数),程序需要包含让用户自己输入数列,再完成递归二分检索 2.冒泡排序(要求:注释解释清楚算法,显示每一步中间结果),程序需要包含让用户自己输入数列,再完成冒泡程序
时间: 2023-08-14 13:05:17 浏览: 73
用Python写冒泡排序代码
5星 · 资源好评率100%
1.递归二分检索代码实现:
```python
def binary_search(arr, low, high, x):
# 检查基准情况
if high >= low:
mid = (high + low) // 2
# 如果元素正好在中间
if arr[mid] == x:
return mid
# 如果元素小于中间值,则在左侧子数组中查找
elif arr[mid] > x:
print(f"检索第 {mid+1} 个元素: {arr[mid]}")
return binary_search(arr, low, mid-1, x)
# 如果元素大于中间值,则在右侧子数组中查找
else:
print(f"检索第 {mid+1} 个元素: {arr[mid]}")
return binary_search(arr, mid+1, high, x)
else:
# 元素不在数组中
return -1
# 测试程序
arr = list(map(int, input("请输入一个整数数组(用空格分隔): ").split()))
x = int(input("请输入要查找的元素: "))
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print(f"元素在索引 {result} 处")
else:
print("元素不在数组中")
```
2.冒泡排序代码实现:
```python
def bubble_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# 最后 i 个元素已经排好序了
for j in range(0, n-i-1):
# 如果当前元素大于下一个元素,则交换它们
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
print(f"第 {i+1} 轮排序结果: {arr}")
return arr
# 测试程序
arr = list(map(int, input("请输入一个整数数组(用空格分隔): ").split()))
print("排序前的数组: ", arr)
sorted_arr = bubble_sort(arr)
print("排序后的数组: ", sorted_arr)
```
阅读全文