int i;
for(i=0;i<n;i++)
{
if(i==number);
break;
}
ORどの "for"ループのほうが時間の複雑さが優れていますか?
for(i=0; ;i++)
{
if(i==number)
break;
}
は、ループ・エフェクトのための時間の複雑さに比較部分を削除するか、ではないでしょうか?
あなたがより速く、正確であると言うことはできませんint i;
for(i=0;i<n;i++)
{
if(i==number);
break;
}
ORどの "for"ループのほうが時間の複雑さが優れていますか?
for(i=0; ;i++)
{
if(i==number)
break;
}
は、ループ・エフェクトのための時間の複雑さに比較部分を削除するか、ではないでしょうか?
あなたがより速く、正確であると言うことはできません...
最初の1時間の複雑さはO(min(n, number))
で、2番目はO(number)
です。
nがnumberより大きい(または等しい)場合、最初の値は2番目の値と等しくなります。
O(number)
(数がn未満であるように、min(n, number) = number
O(number)
nは数よりも小さい場合、それはまた停止するように、最初に(速くなりますn)。
O(n)
(nはnより小さいアンバー、min(n, number) = n
O(number)
、最初は速くなります。
ご覧のとおり、for look内の比較を削除すると、その複雑さが異なる2番目のケースを除いてはっきりと分かります。
ありがとうダニエル、ループやいくつかの違いは? –
私が説明したように、数がnより大きい場合は時間が異なります。そうでない場合は時間の複雑さは同じです – Daniel
最初は 'O(n)'です。 2番目は 'O(max(number))'です。 –
breakステートメントがあるので、i == numberのときに終了します。そして実際にはその中に「数字」を持つ配列のためです。 –
ありがとう、ユージン・Sh。どうやって説明できますか? –