3 回答

TA贡献1875条经验 获得超3个赞
'list' object not callable当您使用()而不是时会发生错误[]。要修复它,请替换(a,b) = swap(list[j],list(j+1))为 (a,b) = swap(list[j],list[j+1])
以下代码给出了您所需的结果。
功能:
def swap(a,b):
if a > b:
t = a
a = b
b = t
return a,b
def sort(list):
k=0
for i in range(len(list)):
for j in range(len(list)-1): #Change Here
if list[j] > list[j+1]:
(a,b) = swap(list[j],list[j+1]) #Change here
list[j] = a
list[j+1] = b
k+=1
#print(k,' ',list) #Change here
else:
k+=1
continue
print(list)
list = [5,6,89,2,1,42,23,46,0,83]
sort(list)

TA贡献1845条经验 获得超8个赞
list(j+1)是错的。“列表”对象不可调用。同样在冒泡排序中,第二个循环直到列表中的倒数第二个元素ie. range(len(list)-1)
def swap(a,b):
if a > b:
t = a
a = b
b = t
return a,b
def sort(list):
k=0
for i in range(len(list)):
for j in range(len(list)-1): #Change Here
if list[j] > list[j+1]:
(a,b) = swap(list[j],list[j+1]) #Change here
list[j] = a
list[j+1] = b
k+=1
print(k,' ',list)
else:
k+=1
continue
print(list)
list = [5,6,89,2,1,42,23,46,0,83]
sort(list)
输出
3 [5, 6, 2, 89, 1, 42, 23, 46, 0, 83]
4 [5, 6, 2, 1, 89, 42, 23, 46, 0, 83]
5 [5, 6, 2, 1, 42, 89, 23, 46, 0, 83]
6 [5, 6, 2, 1, 42, 23, 89, 46, 0, 83]
7 [5, 6, 2, 1, 42, 23, 46, 89, 0, 83]
8 [5, 6, 2, 1, 42, 23, 46, 0, 89, 83]
9 [5, 6, 2, 1, 42, 23, 46, 0, 83, 89]
11 [5, 2, 6, 1, 42, 23, 46, 0, 83, 89]
12 [5, 2, 1, 6, 42, 23, 46, 0, 83, 89]
14 [5, 2, 1, 6, 23, 42, 46, 0, 83, 89]
16 [5, 2, 1, 6, 23, 42, 0, 46, 83, 89]
19 [2, 5, 1, 6, 23, 42, 0, 46, 83, 89]
20 [2, 1, 5, 6, 23, 42, 0, 46, 83, 89]
24 [2, 1, 5, 6, 23, 0, 42, 46, 83, 89]
28 [1, 2, 5, 6, 23, 0, 42, 46, 83, 89]
32 [1, 2, 5, 6, 0, 23, 42, 46, 83, 89]
40 [1, 2, 5, 0, 6, 23, 42, 46, 83, 89]
48 [1, 2, 0, 5, 6, 23, 42, 46, 83, 89]
56 [1, 0, 2, 5, 6, 23, 42, 46, 83, 89]
64 [0, 1, 2, 5, 6, 23, 42, 46, 83, 89]
[0, 1, 2, 5, 6, 23, 42, 46, 83, 89]
添加回答
举报