我用python语言写了这段代码:
utilizArray = [0.7, 0.6, 0.4, 0.3, 0.8]
M = []
for i in range(len(utilizArray)):
M.append([i, utilizArray[i]])
print(M)
print()
for passnum in range(len(utilizArray) - 1,0,-1):
for i in range(passnum):
if M[i][1] < M[i+1][1]:
temp = M[i][1]
M[i][1] = M[i+1][1]
M[i+1][1] = temp
print()
print(M)
这是输出:
[[0, 0.7], [1, 0.6], [2, 0.4], [3, 0.3], [4, 0.8]]
[[0, 0.8], [1, 0.7], [2, 0.6], [3, 0.4], [4, 0.3]]
我希望输出是这样的(每个值都有相应的索引(:
[[4, 0.8], [0, 0.7], [1, 0.6], [2, 0.4], [3, 0.3]]
你能给我一个密码吗。
您应该根据第一个元素进行比较,但将整个元素作为一个单元进行交换:
utilizArray = [0.7, 0.6, 0.4, 0.3, 0.8]
M = []
for i in range(len(utilizArray)):
M.append([i, utilizArray[i]])
print(M)
print()
for passnum in range(len(utilizArray) - 1,0,-1):
for i in range(passnum):
if M[i][1] < M[i+1][1]:
# the [1]s from these lines were removed
temp = M[i]
M[i] = M[i+1]
M[i+1] = temp
print()
print(M)
或者,只需使用内置的sort
函数,使用第二个元素作为键(这种方法也比气泡排序快得多(:
utilizArray = [0.7, 0.6, 0.4, 0.3, 0.8]
M = []
for i in range(len(utilizArray)):
M.append([i, utilizArray[i]])
print(M)
print()
M.sort(key=lambda x: x[1], reverse=True)
print()
print(M)
您可以使用enumerate:获取列表元素的索引
array = ['a', 'b', 'c']
for index, letter in enumerate(array):
print(index, letter)
Output:
>0 a
>1 b
>2 c