如何修改冒泡排序Python代码实现小元素左移?
调整冒泡排序实现将较小元素移至左侧
原代码通过从左到右相邻比较,把每轮最大的元素逐步“冒泡”到列表右侧。要改成将较小元素移至左侧,只需调整内层循环的遍历方向和比较逻辑,具体修改如下:
修改后的代码
from random import randint lst = [randint(0,100) for i in range(5)] print("排序前:", lst) # 外层循环控制排序轮数,每轮确定一个左侧的最小元素 for i in range(len(lst)-1): # 内层循环从列表末尾往前遍历,直到已排序区域的边界i for j in range(len(lst)-1, i, -1): # 若当前元素比左侧元素小,交换位置让小元素左移 if lst[j] < lst[j-1]: lst[j], lst[j-1] = lst[j-1], lst[j] print("排序后:", lst)
关键修改说明
- 内层循环方向:从列表末尾(
len(lst)-1)递减遍历到i,覆盖未排序的右侧区域,这样能把小元素逐步往左推送 - 比较逻辑调整:将原条件
lst[j] > lst[j+1]改为lst[j] < lst[j-1],触发交换的条件变成“当前元素比左侧元素小”,确保小元素左移 - 排序效果:每轮外层循环结束后,第
i个位置会被未排序区域的最小元素占据,最终实现列表从小到大排序
内容的提问来源于stack exchange,提问作者Mykyta Sorokin
相关产品推荐
相关产品推荐

