我想编写的代码,是一个插入排序。我试图让代码将2个值分类并将它们放入新列表中。到目前为止,它只是把值到列表中没有他们进行排序,我不明白为什么什么是错的wtih我插入排序代码
pos = 0
pos2 = 1
go = True
while go == True:
for i in range(len(ex)-1):
stack.append(ex[pos])
print(stack)
stack.append(ex[pos2])
print(stack)
if stack[pos] > stack[pos2]:
stack[pos], stack[pos2] = stack[pos2], stack[pos]
print(stack)
pos = pos + 2
pos2 = pos2 + 2
我知道这不是有效的,但它是基于断码我对冒泡排序它确实
做go = True
add = 0
while go == True:
for i in range(len(ex)-1):
if ex[i] > ex[i+1]:
go = True
ex[i], ex[i+1] = ex[i+1], ex[i] #flips the numbers in the list
print(ex)
add = add + 1
if add >= len(ex):
go = False
编辑 我已经彻底改变了它,但仍然存在问题。它只会交换一次数值,即使它需要多次交换才能在正确的位置。下面是代码
pos = 0
while pos < len(ex)-1:
for i in range(len(ex)-1):
stack.append(ex[i])
print(stack)
if stack[i-1] > stack[i]:
stack[i-1], stack[i] = stack[i], stack[i-1]
pos = pos + 1
else:
pos = pos + 1
拿一张纸和分析你的代码。你一定会看到你出错的地方,这显然是一个很大的错误。 – hashcode55
正如@ hashcode55提到的那样,您可以在纸上分析,或者打印变量的值,直到您看到发生了什么问题。 – 2017-03-05 01:22:27