无法在Python中将数组按升序排序
我知道我可以使用sort()函数,但我正在尝试不使用它来实现这一点无法在Python中将数组按升序排序,python,arrays,sorting,Python,Arrays,Sorting,我知道我可以使用sort()函数,但我正在尝试不使用它来实现这一点 from random import randint # Create variables numberArray = [0]*20 # Populate array for i in range(0,20): numberArray[i] = randint(0,300) # Sort array into ascending order print("Sorting array into ascending or
from random import randint
# Create variables
numberArray = [0]*20
# Populate array
for i in range(0,20):
numberArray[i] = randint(0,300)
# Sort array into ascending order
print("Sorting array into ascending order...")
sortedAscending = False
while sortedAscending == False:
for i in range(0,20):
sortedAscending = True
if i != (len(numberArray)-1):
if numberArray[i] > numberArray[i+1]:
temp = numberArray[i]
numberArray[i] = numberArray[i+1]
numberArray[i+1] = temp
sortedAscending = False
for j in range(0,20):
print(numberArray[j])
print("END OF ARRAY")
print()
for i in range(0,20):
print(numberArray[i])
它开始对数组进行排序,但在几个循环之后,它无法对任何数字进行排序。请帮忙。
注意:带有“数组结束”的循环用于调试。试试这个,让我知道它是否工作:)(到目前为止,我已经测试了2-3次,它工作得很好)
我将
sortedAscending=True
移出了for循环您已经实现了冒泡排序
在python中,值交换非常简单。假设您想交换numberArray[i]和numberArray[i+1]的值,那么
你可以简单地使用这个
numberArray[i], numberArray[i+1] = numberArray[i+1], numberArray[i]
这是你的密码。这段代码对您来说应该可以正常工作
from random import randint
# Create variables
numberArray = [0]*20
# Populate array
for i in range(0,20):
numberArray[i] = randint(0,300)
# Sort array into ascending order
print("Sorting array into ascending order...")
sortedAscending = False
while sortedAscending == False:
sortedAscending = True # this should be before the for loop
for i in range(0,20):
if i != (len(numberArray)-1):
if numberArray[i] > numberArray[i+1]:
numberArray[i], numberArray[i+1] = numberArray[i+1], numberArray[i]
sortedAscending = False
for i in range(0,20):
print(numberArray[i])
(1) 展示它是如何失败的,不要只是说它失败了。(2) StackOverflow的重点是实际问题(参见);练习是。。。不太理想。欢迎使用堆栈溢出!当问题陈述只是“它不起作用”时,很难提供解决方案。请你的问题更完整地描述一下你预期会发生什么,以及这与实际结果有什么不同。请参阅,以获取关于什么是好的解释的提示。(我认为这是一个冒泡排序?您可以编辑标题,说您正在尝试实现冒泡排序,以便希望帮助解决实际问题的人可以看到这一点并转到其他地方,而不是单击并感到恼火)。注意:这不是一个数组,而是一个列表。
from random import randint
# Create variables
numberArray = [0]*20
# Populate array
for i in range(0,20):
numberArray[i] = randint(0,300)
# Sort array into ascending order
print("Sorting array into ascending order...")
sortedAscending = False
while sortedAscending == False:
sortedAscending = True # this should be before the for loop
for i in range(0,20):
if i != (len(numberArray)-1):
if numberArray[i] > numberArray[i+1]:
numberArray[i], numberArray[i+1] = numberArray[i+1], numberArray[i]
sortedAscending = False
for i in range(0,20):
print(numberArray[i])