用递归实现冒泡排序python
时间: 2023-10-22 08:13:38 浏览: 94
好的,下面是用递归实现冒泡排序的Python代码:
```
def recursive_bubble_sort(arr, n):
if n == 1:
return
for i in range(n-1):
if arr[i] > arr[i+1]:
arr[i], arr[i+1] = arr[i+1], arr[i]
recursive_bubble_sort(arr, n-1)
arr = [64, 34, 25, 12, 22, 11, 90]
recursive_bubble_sort(arr, len(arr))
print("排序后的数组:", arr)
```
这里使用了递归的思想,每次循环都会把最大的元素移动到数组的最后。递归函数中,如果n等于1,则不执行任何操作,否则进行一次循环,并调用自身进行下一次循环,直到n等于1为止。
希望能够帮到你!如果您有其他问题,请随时问我。
相关问题
双向冒泡排序算法递归实现冒泡排序python
好的,我了解你的要求和问题。以下是双向冒泡排序算法的递归实现和冒泡排序的 Python 代码:
# 双向冒泡排序算法递归实现
def recursive_bubble_sort(arr, start, end):
if start >= end:
return
for i in range(start, end):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
for i in range(end - 1, start, -1):
if arr[i] < arr[i - 1]:
arr[i], arr[i - 1] = arr[i - 1], arr[i]
recursive_bubble_sort(arr, start + 1, end - 1)
# 冒泡排序 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
希望能帮到你,如果你有其他问题,可以随时问我。
使用非递归实现冒泡排序Python
当然可以。非递归实现冒泡排序(Bubble Sort)通常通过迭代的方式,利用两个指针的交换操作来完成。这里是一个简单的Python示例:
```python
def bubble_sort(arr):
n = len(arr)
# 非递归的关键在于设置标志位
swapped = True
while swapped:
swapped = False # 假设这一轮不会再交换元素
for i in range(1, n): # 从第一个元素开始到倒数第二个
if arr[i - 1] > arr[i]: # 如果前一个元素大于后一个
arr[i - 1], arr[i] = arr[i], arr[i - 1] # 交换位置
swapped = True # 标志位改为True,表示有交换发生
# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序后的数组:", arr)
阅读全文