02.複雑さの分析と安定性(基本的なデータ構造アルゴリズム)

複雑さの分析と安定性

  • 最良の時間計算量
  • 最悪の場合の時間計算量
  • 平均的なケース時間の複雑さ
// 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
    バブルソートと呼ばれる非インプレースアルゴリズムは、インプレースに属します

おすすめ

転載: blog.51cto.com/huangkui/2677731