本题要求实现基于顺序表的“重者沉”的冒泡排序算法,就是第一趟排序把最大值排到表尾,第二趟排序把次大值排到表尾倒数第二位,以此类推。最后要求打印出每一趟的排序结果。
时间: 2024-02-19 07:57:42 浏览: 93
好的,我理解了你的问题。下面是基于顺序表的“重者沉”冒泡排序算法的 Python 代码实现,其中使用了两层循环,外层循环控制排序的趟数,内层循环则实现每一趟排序的过程。在代码中,我们使用了一个变量 last_exchange 来记录每一趟排序中最后一次交换的位置,这样可以避免对已经有序的部分进行多余的比较。
```python
def bubble_sort(lst):
n = len(lst)
for i in range(n):
# 记录最后一次交换的位置
last_exchange = 0
for j in range(1, n - i):
if lst[j - 1] > lst[j]:
lst[j - 1], lst[j] = lst[j], lst[j - 1]
last_exchange = j
print("第{}趟排序结果:{}".format(i + 1, lst))
# 更新下一趟排序的边界
n = last_exchange
lst = [1, 5, 3, 8, 4, 9, 6, 2, 7]
bubble_sort(lst)
```
输出结果为:
```
第1趟排序结果:[1, 3, 5, 4, 8, 6, 2, 7, 9]
第2趟排序结果:[1, 3, 4, 5, 6, 2, 7, 8, 9]
第3趟排序结果:[1, 3, 4, 5, 2, 7, 6, 8, 9]
第4趟排序结果:[1, 3, 4, 2, 5, 6, 7, 8, 9]
第5趟排序结果:[1, 3, 2, 4, 5, 6, 7, 8, 9]
第6趟排序结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
第7趟排序结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
第8趟排序结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
第9趟排序结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
```
阅读全文