如何提高此代码的时间复杂度?

时间:2014-10-28 18:46:03

标签: php algorithm time-complexity

如何改善此代码的时间复杂度?

 $s = "Name";
    for($i=0; $i<strlen($s); $i++) {

    //some code

    }

1 个答案:

答案 0 :(得分:0)

这取决于PHP的字符串和strlen()的实现。如果它是O(n)(它在GNU的C strlen()中),则OP代码的复杂度将为O(n²)。在这种情况下,将strlen()移出循环会改善为O(n):

$length = strlen($s);
for($i=0; $i<$length; $i++) {

//some code

}

但是,如果strlen()的复杂度为O(1)(e.g. C++),则代码位于O(n)中,您无法再对其进行改进。

我必须承认,我不熟悉C / C ++,但我想长度是zend_string的简单属性,即PHP's strlen()是O(1):

ZEND_FUNCTION(strlen)
{
    zend_string *s;
    // [..]
    RETVAL_LONG(s->len);
}