私の機能の時間の複雑さについて質問したいと思います。以下はC++で書かれた私の関数です。この関数の時間複雑度はどのくらいですか?
void List::swap(List& other)
{
List temp;
Iterator r = begin();
Iterator i = other.begin();
while(!i.equals(other.end()))
{
temp.push_back(i.position->data);
i = other.erase(i);
}
while(!r.equals(end()))
{
other.push_back(r.position->data);
r = erase(r);
}
r = temp.begin();
for(r; !r.equals(temp.end()); r.next())
{
push_back(r.position->data);
}
}
機能の目的は、2つのリンクされたリストの要素を交換することです。演習では、この関数をO(1)時間に実行する必要があります。私は3つのループを使用していたので、私は鉱山の機能の時間の複雑さをどのように正確に数えるのかよく分かりませんでした。
各操作は何回実行されますか?個々の演算のいずれかがO(1)よりも時間の複雑さが大きいか? –
一般的に、ループの回数が一定でない場合、複雑さは 'O(1)'ではありません –
2つのコンテナの内容を一定時間入れ替える場合は、ループしたくありませんそれらの要素の上に。どのように他の要素に触れることなく内容を交換することができるか考えてみてください。 –