python - 冒泡排序算法产生预期结果
问题描述
如果我不能很好地理解这个话题,请原谅我。我正在实现一个基本的(在 youtube 上找到)冒泡排序算法。与示例“list = [3, 4, 5, 9, 0, 2, 1]”相反,从我学到的角度来看,我决定尝试实现不同的数字并获得一个有组织但没有“排序”的列表。我对输出并不不满,我只是好奇其他人对我的不同结果有什么看法,并可能对此有所了解。
这是在带有 Windows 计算机的 Visual-studio 上使用 python。
原始代码是:
def bubblesort(list):
print("bubblesort")
for k in range(0,len(list)-1, 1):
for i in range(0,len(list)-1,1):
if list [i] > list[i + 1]:
temp = list[i]
list[i] = list[i + 1]
list[i + 1] = temp
list = [43, 7, 30, 234, 35, 77, 79, 45, 34, 21, 26]
print(list)
bubblesort(list)
print(list)
outputs:
[43, 7, 30, 234, 35, 77, 79, 45, 34, 21, 26]
bubblesort
[7, 21, 26, 30, 34, 35, 43, 45, 77, 79, 234]
这就是我改变探索结果的方式:
def bubblesort():
for i in range(0, len(list)-1, 1):
if list[i] > list[i + 1]:
list[i] = list[i + 1]
list = [10,110,13,00,0,110]
list = [10,00,11,00,0,1111]
list = [10,101,00,10,0,110]
print(list)
print(list)
print(list)
对我的数字的随机性感到抱歉,我弄乱了一些,看看它是否会排序相同(确实如此,完全相同)。它将某些数字排成列,这很酷,但我希望它们按照上面的值顺序排序,甚至包括我之后添加的不同数字。所以基本上我期待这样的事情:
[0,00,10,13,110,110]
[0,00,00,10,11,1111]
[0,00,10,10,101,110]
实际输出为:
[10, 101, 0, 10, 0, 110]
[10, 101, 0, 10, 0, 110]
[10, 101, 0, 10, 0, 110]
解决方案
通过做
list = [10,110,13,00,0,110]
list = [10,00,11,00,0,1111]
list = [10,101,00,10,0,110]
您list
在每一行中分配新内容,因此此代码实际上等效于
list = [10,101,00,10,0,110]
我会将代码更改为以下形式:
def bubblesort(lst):
for i in range(len(lst)-1):
if lst[i] > lst[i + 1]:
lst[i] = lst[i + 1]
lst1 = [10,110,13,00,0,110]
lst2 = [10,00,11,00,0,1111]
lst3 = [10,101,00,10,0,110]
bubblesort(lst1)
bubblesort(lst2)
bubblesort(lst3)
print(lst1) #output: [10, 13, 0, 0, 0, 110]
print(lst2) #output: [0, 0, 0, 0, 0, 1111]
print(lst3) #output: [10, 0, 0, 0, 0, 110]
请注意,我添加了lst
参数 for,bubblesort
因此它不仅可以用于具有固定名称的一个变量。请避免list
在 Python 语言中用作变量名,因为已经存在内置list
函数。
请注意,该bubblesort
功能不是排序的正确实现,尽管我很困惑您到底想要做什么,但我将其保留原样。
推荐阅读
- c++ - 特化包含自身的类型的非类型模板
- python - 是否可以根据时间序列在 Pandas 上创建一个新的数据框,并具有每日差异?
- node.js - 使用 Node.js,如果 dotenv 不包含在 app.js 之外的其他文件中,为什么会触发错误?
- android - 生成APK时Android在改造中的不同行为
- javascript - react - .include 返回意外结果
- html - Html 颜色呈现为与 CSS 中设置的颜色不同的颜色 - Mac 上的跨浏览器问题(所有浏览器都有此问题)
- reactjs - 基于映射数组切换可见性
- html - 在 Bootstrap 4 导航栏菜单系统上进行调整
- javascript - 给定一个露营地数组,返回数组中露营地的总数
- r - 尝试运行 RDAVIDWebService 时出错