2017-01-11 9 views
0

バブルセットの仕組みを理解しようとしています。私はここにこれに関する複数の糸があることを知っているが、それらは機能のすべての異なったバージョンであり、初心者に説明する良い仕事をしない。 - 1 - 私python 3のbubblesort関数

def bubblesort(mylist): 
for i in range(0, len(mylist) - 1): 
    for j in range(0, len(mylist) - 1 - i): 
     if mylist[j] > mylist[j+1]: 
      mylist[j], mylist[j+1] = mylist[j+1], mylist[j] 
return mylist 

は、誰かが私にライン3の目的を説明することができ、それがlen(マイリスト)は言う:私は、ユーチューブ上のバブルソートのために、この簡潔なコードを見つけましたか?なぜ私は私を減算していますか?マイリストは何をしますか?

私は初心者のプログラマーです。これらのループの仕組みをよりよく理解しようとしています。

+0

このウェブサイトは、ソートアルゴリズムを理解するための素晴らしい方法です。https://visualgo.net/sorting – shash678

+1

これは最適ではない実装です... –

+0

最適な実装は何でしょうか? –

答えて

2

これは、繰り返しごとに最後の番号がソートされるためです。具体的には、このリストを見てみましょう:

[0, 2, 5, 7, 3, 1] 

最初のソートの後、最大の番号がソートされます。 2番目のソートの後、2番目に大きいソート番号がソートされています。または、基本的には、インデックスlen(myList) - 1 - iterationの番号が既にソートされ、正しい位置に表示されます。最初の並べ替えの後、最大の数が適所にあります。最大の数字のインデックスは現在len(myList) - 1です。次に、2番目に大きな数字が正しく配置されます。このiterationは0から1になります.2番目に大きい数字のインデックスは、len(myList) - 1 - iterationまたはlen(myList) - 1 - 1です。

+0

ですから、私は反復番号になります。各反復のために、その数は1だけ増やされますか?その最後の数値はすでにソートされているので、次の反復処理から除外しますので、最終的にはインデックス0に終わり、終了します。 –

+0

@RyanPostellそれは正しい –

+0

素晴らしいです、ありがとう! –

関連する問題