2017-09-05 116 views
0

我知道我可以使用sort()函数,但我试图在不使用它的情况下执行此操作。无法在Python中按升序对数组进行排序

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]) 

它开始对数组进行排序,但是在几个循环后未能对任何数字进行排序。请帮忙。 注意:带“END OF ARRAY”的循环用于调试。

+1

(1)显示它如何失败,不要说失败。 (2)StackOverflow的重点是*实用*问题(请参阅https://stackoverflow.com/help/on-topic);练习是......并不理想。 –

+1

欢迎来到Stack Overflow!当问题陈述简单地说,“它不起作用”时,很难提供解决方案。请[编辑]您的问题,以更全面地描述您预期会发生什么以及与实际结果有何不同。看[问]提示什么是一个很好的解释。 –

+0

(这是......泡沫排序,我想?你可以编辑标题说你正在尝试实施泡泡排序,所以那些想要帮助解决实际问题的人可以看到并去其他地方,而不是点击通过和被惹恼)。 –

回答

1

试试这个,让我知道,如果它的工作原理:)(我测试过它的2-3倍到目前为止,它一直工作很好)

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]: 
       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]) 

我感动sortedAscending = True出来的for循环

0

您已实施冒泡排序

在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])