実現したいこと
数字の列を、数字の大きさの順に並び替えたいです。
列の最後尾から順に先頭まで要素を見ていき,
逆転があれば順番を入れ換えて最小の要素が先頭にくる「バブルソート」を作りたいです。
同じ数字がいくつあっても正しく実行できるようにしたいです。
前提
Pythonでバブルソートを作っています。
1 5 3と与えられたとき1 3 5と大きさの順に並び替えることはできるのですが、同じ数字が2つ以上入るとうまく並び替えることができません。
発生している問題・エラーメッセージ
1 4 2と入力すると
[1, 2, 4]と正しい数字列が返されるのですが
1 3 3 2のように同じ数字が入ると
[1, 3, 2, 3]と正しく並び替えられません。
該当のソースコード
python
1A = list(map(int,input().split()))2 3while(True):4 swapp=False5 for i in range(len(A) - 1):6 x = A[i]7 y = A[i+1]8 9 if x>y:10 A[i+1]=x 11 A[i]=y 12 swapp=True13 else:14 break15 16print(A)
試したこと
while文でなくfor文でやってみたりしたのですが同じ数字が2つ以上入るとどうしてもうまくいきません。
同じ数字がいくつ入ってもきちんと大きさの順に並べたいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

0 コメント