用Python生成一个整型列表,通过函数将次序打乱,然后进行冒泡正逆排序,并输出每一趟过程结果。
时间: 2024-11-03 10:14:08 浏览: 14
在Python中,我们可以创建一个整数列表,然后使用内置的random模块打乱顺序。接下来,我们将编写一个函数来进行冒泡排序,同时记录和打印每一轮排序的过程。以下是完整的代码示例:
```python
import random
def shuffle_list(lst):
# 打乱列表
shuffled_lst = lst.copy() # 创建一个列表副本防止原列表改变
random.shuffle(shuffled_lst)
return shuffled_lst
def bubble_sort_descending(lst, round_num=0):
n = len(lst)
# 冒泡排序(从大到小)
for i in range(n):
print(f"Round {round_num+1}, Current List:", lst)
# 最后一轮不需要比较
if i >= n - 1:
break
for j in range(n - 1 - i):
if lst[j] < lst[j + 1]:
lst[j], lst[j + 1] = lst[j + 1], lst[j] # 交换元素
return lst
# 生成初始列表
initial_list = list(range(1, 11)) # 示例:[1, 2, 3, ..., 10]
shuffled_list = shuffle_list(initial_list)
# 开始冒泡排序并输出结果
sorted_descending = bubble_sort_descending(shuffled_list)
print("Final Sorted List (Descending):", sorted_descending)
# 反转列表并再次排序(从小到大)
sorted_ascending = sorted_descending[::-1]
bubble_sort_descending(sorted_ascending, round_num=0) # 使用原始的冒泡排序函数,因为已经反转了顺序
# 相关问题:
1. 如果列表中有重复的元素,冒泡排序会如何处理?
2. 如何优化这个冒泡排序算法使其更高效?
3. 对于非常大的列表,有没有更好的排序算法推荐?
阅读全文