複数の関数を使用している場合、大きなO表記に関する質問があります。複数の関数のビッグO表記
heap sort array of size n
for i = 1 to n{
retrieve array[i]
change value of array[i]
}
私は、ヒープの並べ替えを使用して(N)(ログ)Oであることを知っている: は、私は時間の複雑さは、以下の擬似コードのために何であるかを知りたいとしましょう。配列内のデータの取得と変更はO(1)なので、ループは複雑さO(n)です。 私の質問は、このコード全体の複雑さは?それは単なる時間の複雑さの最大のものですか?この場合、O(n log(n))?事前に
for i = 1 to n{
// nothing fancy here
}
for y = 1 to n{
// nothing fancy here either
}
ありがとう: もしそうなら、何がこのようになります機能の複雑さになります。
宿題?それのように聞こえる。 – EmeryBerger
最初の例は宿題です。しかし、実際には、私は時間の複雑さの残りの部分を自分で考え出したということです。しかし、2番目の例は宿題ではありません。私が知りたいのは理論だけなので、第2の例にも答えることができます。これは私の宿題ではありません。 – EthanM
"配列内のデータの取得と変更はO(1)です。":比較ソートの複雑さを評価するとき、配列をソートするのに必要な**比較数**を伝統的に数える(大きなO漸近を提供する)アルゴリズムがかかる時間ではなく、サイズnのものです(配列がテープ上にある場合を考え、要素にアクセスするためにテープを巻き戻す必要があります)。技術的には正しいですが、問題の定式化は、複雑さの理論が何であるかを完全に把握していないことを示しています。 「全体としての複雑さ」はありません。正確に数えるものを指定する必要があります。 –