2016-12-24 22 views
-7

バブルソートを使用してリストをソートするアルゴリズムを記述しました。これはリストをソートする最も効率的な方法ですか?
そうでない場合、なぜですか?
なぜ効率が悪く、選択肢は何ですか?バブルソートよりも効率的なソートアルゴリズム

def BubbleSort(List): 
    for i in range(len(List)-1): 
      for Number in range(len(List)-1): 
       if List[Number] > List[Number+1]: 
        List[Number], List[Number+1] = List[Number+1], List[Number] 

print(BubbleSort([5,2,1,4,3]) 

ありがとう!

+0

ああありがとうございます。私はすでにソート機能が組み込まれていることを理解していますが、私は練習のためにアルゴリズムを自分自身で作成しようとしており、より効率的なアルゴリズムをより良く作る方法を理解したいと考えています。グーグルで –

+1

ウィキペディアを確認してください。あなたはまともな質問をすることができるときに戻ってきてください。 –

答えて

3

上記のアルゴリズムでは、配列のlength5の場合は、if statement25回を実行します。一般的に、nのサイズのリストがある場合は、の操作はfor loopswappingを除いて行われます。

サイズ10^6のリストについては、10^12操作以上です。 CまたはC++ do約10^9操作/秒あなたのこのコードは30分以上かかる10^3秒かかるでしょう。だから非常に非効率的です。

より速いので、bubble sortの代わりに使用できるソートアルゴリズムがあります。

他の技術の多くはそこにもあるが、これらは使用される最も一般的です。

これらのアルゴリズムを実装する必要はありません。最も効率的なアルゴリズムの1つが、ほとんどの言語の標準ライブラリ(CRust)で既に実装されているためです。その実装を使用することもできますし、必要に応じて独自のcomparator関数を渡すこともできます。

関連する問題