私は2つのキューを持っています.1つはストレージ用の配列を使用して実装され、もう1つはリンクされたリストを使用して実装されています。キューの複雑さの分析
私はエンキューとデキュー操作の複雑さは、このようになっていることを信じている -
LinkedListQueueエンキュー - O(1)
LinkedListQueue Dequeue- O(1)
ArrayQueueEnqueue - O(1 )
ArrayQueueデキュー - O(n)の
だから私は彼らからの文字列を追加し、除去することにより、両方のキューをテストしました。ここで私が得た結果は、時間がとられるがミリ秒である -
私のビッグああの複雑さの分析は、これらの結果を積み重ねていますか?私が持っているLLQueue Enqueueの複雑さはO(1)ですが、わかるように1000文字列の場合は2ms、100000文字列の場合は79msです。それは期待されていますか?
私はArrayQueue DequeueをO(n)としてマークダウンしましたが、その結果はO(n)のように見えますか? 20000と50000の文字列の間には大きなジャンプがありますが、50000の代わりに100000の文字列をデキューすると時間が2倍になります。
どのように正確にプロファイリングしましたか? –
forループ内の文字列をエンキュー/デキューする前にタイマーを開始し、ループの直後にタイマーを直ちに停止します。 –
次に、コブルプログラミングを行うことができるメインフレームを見つけ、実際のCPU時間と経過時間の違いを知ることができます。あなたは経過時間を測定しています。ガベージコレクションが実行環境の一部である場合はガベージコレクション、OSはCPU時間を他のタスクにスケジューリングするなど、ウイルススキャンの極端な例にも影響されるため、これを計測するのはナンセンスです。 –