【发布时间】:2018-04-27 09:22:58
【问题描述】:
我正在尝试计算这个函数的时间复杂度
代码
int Almacen::poner_items(id_sala s, id_producto p, int cantidad){
it_prod r = productos.find(p);
if(r != productos.end()) {
int n = salas[s - 1].size();
int m = salas[s - 1][0].size();
for(int i = n - 1; i >= 0 && cantidad > 0; --i) {
for(int j = 0; j < m && cantidad > 0; ++j) {
if(salas[s - 1][i][j] == "NULL") {
salas[s - 1][i][j] = p;
r->second += 1;
--cantidad;
}
}
}
}
else {
displayError();
return -1;
}
return cantidad;
}
变量productos是一个std::map,它的find方法的时间复杂度是Olog(n),其他变量salas是一个std::vector。 我计算了时间,发现它是 log(n) + nm 但不确定它是否是正确的表达式,或者我应该将其保留为 nm 因为它是最差的,或者如果我只使用 n²。
谢谢
【问题讨论】:
标签: time-complexity