我正在尝试创建一个函数,该函数使用冒泡排序对列表进行排序,并返回一个包含交换和比较次数的元组。这样:
print(perform_bubble_sort([3, 5, 7]))
>>> (3, 0)
.
我尝试使用以下代码,但由于某种原因它没有返回正确的比较次数。
def perform_bubble_sort(blist):
cmpcount, swapcount = 0, 0
while True:
swapped = False
for i in range(1, len(blist)):
cmpcount += 1
if blist[i-1] > blist[i]:
swapcount += 1
blist[i-1], blist[i] = blist[i], blist[i-1]
swapped = True
if not swapped:
break
return cmpcount, swapcount
最佳答案
def perform_bubble_sort(blist):
cmpcount, swapcount = 0, 0
for j in range(len(blist)):
for i in range(1, len(blist)-j):
cmpcount += 1
if blist[i-1] > blist[i]:
swapcount += 1
blist[i-1], blist[i] = blist[i], blist[i-1]
return cmpcount, swapcount
你不需要每次都迭代
blist
关于带有交换计数的 Python 冒泡排序列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26381220/