回答:
あなたが提供した複雑さはすべて真実ですが、それらはBig O表記法で与えられているため、すべての加算値と定数は省略されています。
あなたの質問に答えるには、これら2つのアルゴリズムの詳細な分析に焦点を合わせる必要があります。この分析は手作業で行うことも、多くの本で見つけることもできます。KnuthのArt of Computer Programmingの結果を使用します。
比較の平均数:
これらの関数をプロットすると、次のようになります。
ご覧のとおり、両方の並べ替え方法の漸近的な複雑さは同じですが、要素の数が増えるとバブルの並べ替えははるかに悪くなります。
この分析は、入力がランダムであるという仮定に基づいています-これは常に真実ではないかもしれません。ただし、並べ替えを開始する前に、(任意の方法を使用して)入力シーケンスをランダムに並べ替えて、平均ケースを取得できます。
時間の複雑さの分析は実装に依存するため省略しましたが、同様の方法を使用できます。
関数や比較やスワップの数などの関数自体は、同じレートで成長する限り、漸近コストが同じ2つのアルゴリズムでは異なる場合があります。
要約すると、漸近的制限は、入力サイズに対してアルゴリズムのコストがどのように増加するかをよく理解できますが、同じセット内の異なるアルゴリズムの相対的なパフォーマンスについては何も言いません。
バブルソートはより多くのスワップ時間を使用しますが、選択ソートはこれを回避します。
ソートの選択を使用する場合n
、最大で時間をスワップします。ただし、バブルソートを使用すると、ほとんどスワップされn*(n-1)
ます。そして、明らかに、読み取り時間は、メモリ内であっても書き込み時間よりも短くなります。比較時間およびその他の実行時間は無視できます。そのため、スワップ時間は問題の重大なボトルネックです。