设计一个双向冒泡排序算法,即在排序过程中交替改变扫描方向。python代码及主程序
时间: 2024-03-02 08:53:02 浏览: 192
双向冒泡排序算法的基本思路是:从左往右扫描数组,比较相邻的元素,如果左边的比右边的大,则交换它们;然后再从右往左扫描数组,比较相邻的元素,如果右边的比左边的大,则交换它们。如此反复,直到数组排序完成。
下面是双向冒泡排序算法的 Python 代码实现:
```python
def bubble_sort(a):
n = len(a)
left, right = 0, n - 1
while left < right:
# 从左往右扫描,将最大值交换到右边
for i in range(left, right):
if a[i] > a[i+1]:
a[i], a[i+1] = a[i+1], a[i]
right -= 1
# 从右往左扫描,将最小值交换到左边
for i in range(right, left, -1):
if a[i-1] > a[i]:
a[i], a[i-1] = a[i-1], a[i]
left += 1
return a
```
主程序可以这样写:
```python
a = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
print(bubble_sort(a))
```
输出结果为:
```
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
```
阅读全文