2017-09-05 8 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

ようこそスタックオーバーフロー!問題の声明が単に「動作しない」場合は、ソリューションを提供することは困難です。実際の結果とどのように違うのか、そしてどのようなことが起こるのかをより完全に説明するために質問を編集してください。何が良い説明になるかについてのヒントについては、[ask]を参照してください。 –

+0

(これは...バブルソートだと思いますが、タイトルを編集してバブルソートを実装しようとしているので、実用的な問題を手伝ってくれる人は、クリックするのではなく、スルーして怒っている)。 –

答えて

1

私はループ

のためのアウト sortedAscending = Trueを移動

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

(2-3回今のところそれがうまく機能してきた私はそれをテストしてみた):)これを試してみて、それが動作するかどうか私に教えて

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