请用python语言编写以下程序: 1.递归二分检索(要求:注释解释每一步算法;显示检索结果,每次检索中间值,以及检索次数) 2.冒泡排序(要求:注释解释清楚算法,显示每一步中间结果)
时间: 2023-11-27 18:54:33 浏览: 64
1.递归二分检索
```
# 递归二分检索
def binary_search(arr, low, high, x):
# 基准情况:如果high >= low,则还有元素需要比较
if high >= low:
mid = (high + low) // 2
# 如果元素小于中间元素,则在左侧继续查找
if arr[mid] > x:
return binary_search(arr, low, mid - 1, x)
# 如果元素大于中间元素,则在右侧继续查找
elif arr[mid] < x:
return binary_search(arr, mid + 1, high, x)
# 如果元素和中间元素相等,则返回索引
else:
return mid
else:
# 如果元素不存在,则返回-1
return -1
# 测试
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print("元素在索引 %d" % result)
else:
print("元素不存在")
```
2.冒泡排序
```
# 冒泡排序
def bubble_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already in place
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(arr)
# 测试
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
```
阅读全文