python分别编写函数,用递归及非递归的方式实现冒泡排序算法;然后用一个整数序列测试递归及非递归方式下的执行效率。
时间: 2024-05-12 22:17:02 浏览: 153
好的,您的问题已经记录下来了,我会为您进行解答。关于您的问题,下面是实现冒泡排序算法的 Python 代码,包括递归和非递归方式的实现:
1. 递归方式实现冒泡排序算法:
```python
def recursive_bubble_sort(arr, n=None):
if n is None:
n = len(arr)
if n == 1:
return arr
# 内部循环交换相邻元素
for i in range(n-1):
if arr[i] > arr[i+1]:
arr[i], arr[i+1] = arr[i+1], arr[i]
# 对剩下的元素递归调用排序函数
return recursive_bubble_sort(arr, n-1)
```
2. 非递归方式实现冒泡排序算法:
```python
def iterative_bubble_sort(arr):
n = len(arr)
# 外部循环控制排序次数
for i in range(n):
# 内部循环交换相邻元素
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
```
为了测试这两种算法的执行效率,我们可以使用 Python 的 time 模块来计时。下面是一个测试示例:
```python
import time
# 生成一个长度为 10000 的随机整数序列
lst = [random.randint(1, 10000) for _ in range(10000)]
start = time.time()
recursive_bubble_sort(lst)
end = time.time()
print("递归方式执行时间:", end - start)
start = time.time()
iterative_bubble_sort(lst)
end = time.time()
print("非递归方式执行时间:", end - start)
```
根据上面的代码,我们可以计算出两种方式下冒泡排序算法的执行时间,并进行对比,从而得出它们的执行效率。
阅读全文