我无法确定以下类型代码的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!)
时间吗?
答案 0 :(得分:3)
n + (n-1) + (n-2) + ... + 1 + 0 = n(n+1)/2
大致是
O(n^2)