複雑さの分析と安定性
- 最良の時間計算量
- 最悪の場合の時間計算量
- 平均的なケース時間の複雑さ
// n表示数配列配列的長さintfind (int [] array、int n、int x){ int i = 0; int pos = -1; for(; i <n; ++ i){ if(array [i] == x){ pos = i; ブレーク; } } return pos; }
なぜなら、検索される変数xは、配列のどこにでも現れる可能性があるからです。配列の最初の要素が検索対象の変数xである場合、残りのn-1データをトラバースし続ける必要はなく、時間計算量はO(1)です。ただし、変数xが配列に存在しない場合は、配列全体を再度トラバースする必要があり、時間計算量はO(n)になります。したがって、さまざまな状況下で、このコードの時間計算量は異なります。
最良と最悪は極端なケースであり、発生の可能性は低い
ため、平均的なケースの複雑さを分析する必要があります
- 償却時間の複雑さ
アルゴリズムの安定性
バブルソートは、小さな要素を前方に調整するか、大きな要素を後方に調整することです。比較とは、隣接する2つの要素の比較であり、これら2つの要素間でも交換が行われます。
したがって、2つの要素が等しい場合、それらは再度交換されません。2つの等しい要素が隣接していない場合、2つが前の2 x 2交換によって互いに隣接していても、この時点では交換されません。 、したがって同じ要素前後の順序は変更されていないため、バブルソートは安定したソートアルゴリズムです。
インプレースアルゴリズムですか
インプレースアルゴリズムとは何ですか?
- 追加のリソースに依存したり、少数の追加のリソースに依存したりせず、入力をカバーするために出力のみに依存します
- スペースの複雑さ?(1)はin-situアルゴリズムと見なすことができます
- Not-in-placeまたはOut-of-place
バブルソートと呼ばれる非インプレースアルゴリズムは、インプレースに属します