有一数组序列为: 8,21,15, 40,32, 89, 70,10, 54, 23, 60, 2,17, 29, 68, 80, 100,90,43,47。 (1)使用冒泡排序,实现升序排列; (2)对排序后的结果,使用二分查找方法,查找54的记录,并记录查找次数。
时间: 2025-02-04 08:24:42 浏览: 19
好的,下面是使用冒泡排序对数组进行升序排列,并使用二分查找方法查找54的记录,同时记录查找次数的实现代码。
### 冒泡排序实现升序排列
```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]
return arr
# 原始数组
arr = [8, 21, 15, 40, 32, 89, 70, 10, 54, 23, 60, 2, 17, 29, 68, 80, 100, 90, 43, 47]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)
```
### 二分查找方法查找54
```python
def binary_search(arr, target):
left = 0
right = len(arr) - 1
count = 0
while left <= right:
mid = (left + right) // 2
count += 1
if arr[mid] == target:
print(f"找到目标值{target},查找次数为{count}")
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
print(f"未找到目标值{target}")
return -1
# 在排序后的数组中查找54
index = binary_search(sorted_arr, 54)
```
### 完整代码
```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]
return arr
def binary_search(arr, target):
left = 0
right = len(arr) - 1
count = 0
while left <= right:
mid = (left + right) // 2
count += 1
if arr[mid] == target:
print(f"找到目标值{target},查找次数为{count}")
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
print(f"未找到目标值{target}")
return -1
# 原始数组
arr = [8, 21, 15, 40, 32, 89, 70, 10, 54, 23, 60, 2, 17, 29, 68, 80, 100, 90, 43, 47]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)
# 在排序后的数组中查找54
index = binary_search(sorted_arr, 54)
```
通过上述代码,我们可以对数组进行升序排列,并使用二分查找方法查找54的记录,同时记录查找次数。
阅读全文
相关推荐

















