到目前为止,这是我的python代码,我最后得到的结果是[5,2,3,12,1,12]。
array = [5,2,3,12,1,6]
temp = ''
lastvalue = 5
highestvalue = array[0]
i=0
while i<5:
if array[i]>highestvalue:
highestvalue = array[i]
i+=1
print(highestvalue)
temp = array[5]
array[5] = highestvalue
highestvalue = temp
print(array)
我正在寻找结果[5,2,3,6,1,12]
答案 0 :(得分:2)
temp 是一个单独的变量,而不是数组元素。相反,确定所需的位置,并与之交换。我认为你正在做这件事&#34;艰难的方式&#34; (没有 min 和 max 方法)作业?
array = [5,2,3,12,1,6]
highest_pos = 0
i=0
for i in range(len(array)):
if array[i] > array[highest_pos]:
highest_pos = i
i+=1
print(array[highest_pos])
temp = array[-1]
array[-1] = array[highest_pos]
array[highest_pos] = temp
print(array)
另请注意,我已将 5 引用更改为使用列表长度或最终元素-1。负数从相反(右)端索引一个列表。
答案 1 :(得分:1)
为什么不直接获取索引并交换值
Foo<int> ok;
答案 2 :(得分:0)
我用你的代码做了两次修改:(1)你需要在for循环中存储数组中最高值的索引(2)你需要改变交换数组中最后一个和最高值的方法在代码的最后一部分。
array = [5,2,3,12,1,6]
temp = ''
lastvalue = 5
highestvalue = array[0]
i=0
while i<5:
if array[i]>highestvalue:
highestvalue = array[i]
index = i # store the index of the highest value
i+=1
print(highestvalue)
temp = array[5]
array[5] = highestvalue
array[index] = temp # correct way to swap the highest value to the end value of your array
print(array)