双向冒泡排序数据结构
时间: 2024-01-02 19:23:09 浏览: 75
双向冒泡排序是一种改进的冒泡排序算法,它在每一轮的比较中同时从左到右和从右到左进行比较和交换。这样可以减少排序的轮数,提高排序的效率。
以下是双向冒泡排序的示例代码:
```python
def bidirectional_bubble_sort(arr):
n = len(arr)
left = 0
right = n - 1
while left < right:
# 从左到右进行比较和交换
for i in range(left, right):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
right -= 1
# 从右到左进行比较和交换
for i in range(right, left, -1):
if arr[i] < arr[i - 1]:
arr[i], arr[i - 1] = arr[i - 1], arr[i]
left += 1
# 示例数据
arr = [5, 3, 8, 4, 2]
bidirectional_bubble_sort(arr)
print(arr) # 输出:[2, 3, 4, 5, 8]
```
在这个示例中,我们定义了一个`bidirectional_bubble_sort`函数来实现双向冒泡排序。函数接受一个列表作为输入,并通过左右两个指针来控制排序的范围。在每一轮的比较中,我们先从左到右进行比较和交换,然后从右到左进行比较和交换。通过不断缩小排序范围,直到左指针大于等于右指针,完成排序。
阅读全文