在同一列表的while循环内迭代for循环所需的大O时间

时间:2013-12-04 02:32:57

标签: c++ loops map big-o time-complexity

我无法确定以下类型代码的Big-O运行时间:

typedef map<string, vector<string> >::iterator MapIter;

while(!myMap.empty()) {

    for(MapIter it = myMap.begin(); it != myMap.end(); it++) {

       // if it->first is the key for the pairing I want to remove
       //    then erase it

       break;

    }

}

这里的代码真的不是非常重要,我的完整代码工作正常,我只是想确定Big-O分析。特别让我感到困惑的是,我在地图n次,然后n-1次迭代,依此类推,直到地图为空。这会花费O(n!)时间吗?

1 个答案:

答案 0 :(得分:3)

    n + (n-1) + (n-2) + ... + 1 + 0 = n(n+1)/2 

大致是

   O(n^2)