0
私は自宅で仕事をするためのソートアルゴリズムを作成しようとしていますが、それを動作させることはできません。Python3.6で最初からソートアルゴリズムを書く
def sa(x):
print(x)
i = 0
s_array = []
while x:
for x[i] in x:
if x[i] == min(x):
s_array.append(x.pop(i))
i = 0
elif x[i] == max(x):
s_array.append(x.pop(i))
i = 0
else:
i += 1
print(s_array)
私はプログラムで印刷機能を持つべきではないことを知っていますが、私はそれを簡潔かつパッケージ化したかったのです。これは私が手に出力されます:
>>> sa([89, 23, 33, 45, 10, 12, 45, 45, 45])
[89, 23, 33, 45, 10, 12, 45, 45, 45]
[89, 45, 45, 45, 45, 45, 45, 45, 12]
私はこのようなコードを持っていた:
def sa(x):
print(x)
i = 0
s_array = []
while x:
for x[i] in x:
if x[i] == min(x):
s_array.append(x.pop(i))
i = 0
else:
i += 1
print(s_array)
をが、出力としてこれを取得し、私は(最大を追加する必要がありましたと考えられていた)のelif:
>>> sa([89, 23, 33, 45, 10, 12, 45, 45, 45])
[89, 23, 33, 45, 10, 12, 45, 45, 45]
[10, 45, 45, 45, 45, 45, 45, 45, 45]
助けてください。
' X [i]はxのための:まだリスト内の要素だけで内部
for
ループを削除している間、あなただけのループにしたいの代わりにするのでそれが反復されるときに 'x'を返します。あなたが意図しているものではないことは間違いありません。 –i = 0の場合、forループ文x [i]はx [0]と仮定しますか? –
この場合、forループとwhileループのポイントはありません。あなたは1つを選択する必要があります、あなたはおそらくしばらくしたいソートするため。また、 'x:s_array.append(x.pop(x.index(min(x)))) 'の間に行うこともできます。 –