-3
A
回答
0
這取決於PHP的Strings和strlen()
的實現。如果它是O(n)(它在GNU的C strlen()
中),OP代碼的複雜度將是O(n 2)。移動strlen()
跳出循環會在這種情況下提高至O(N):
$length = strlen($s);
for($i=0; $i<$length; $i++) {
//some code
}
然而,如果的strlen()
複雜度爲O(1)(e.g. C++),該代碼是在爲O(n ),你無法再改進它。
我不得不承認,我是不流利的C/C++,但我想長度爲a zend_string
的簡單屬性,即PHP's strlen()
是O(1):
ZEND_FUNCTION(strlen)
{
zend_string *s;
// [..]
RETVAL_LONG(s->len);
}
+0
你是對的,strlen()在覈心PHP中是O(1)。將調用strlen()移出循環不會改變時間複雜度,只會減少n個函數調用到單個函數調用的開銷,這是一個實現細節 – 2014-10-28 20:47:28
相關問題
- 1. 此代碼的時間複雜度
- 2. 如何提高此算法的時間複雜度?
- 3. 如何確定此代碼的時間複雜度?
- 4. 如何減少此代碼的時間複雜度
- 5. 如何提高此代碼的速度?
- 6. 給定代碼的時間複雜度
- 7. 下面代碼的時間複雜度?
- 8. 給定代碼的時間複雜度。
- 9. 給定代碼的時間複雜度?
- 10. 此代碼的時間複雜度列出所有排列?
- 11. 此代碼示例的時間複雜度
- 12. 時間複雜度練習(僞代碼)
- 13. 時間複雜度僞代碼
- 14. 時間複雜度和空間複雜度,如何計算空間複雜度
- 15. 提高RNNs的複雜度
- 16. 如何找到下面代碼的時間複雜度?
- 17. 以下代碼的時間複雜度如何爲O(n)?
- 18. 代碼Θ(nLogn)的時間複雜度如何?
- 19. 提高此代碼的速度? Foreach
- 20. 時間複雜度和幅度提高訂單
- 21. 如何提高HashMap迭代的複雜度?
- 22. 如何提高此代碼的性能?
- 23. 如何提高此代碼的性能?
- 24. 如何提高此代碼的性能?
- 25. 如何計算此功能的時間複雜度?
- 26. 如何確定此算法的時間複雜度?
- 27. 如何計算此實現的時間複雜度
- 28. 如何計算此遞歸算法的時間複雜度
- 29. 基於僞代碼的復現關係(時間複雜度)
- 30. 查找給定java代碼的時間和空間複雜度
這是不如此複雜,你爲什麼這麼想? – Mihai 2014-10-28 18:46:37
你知道這個for循環是所有迭代循環中最快的嗎? – 2014-10-28 18:47:46
對不起,在想JavaScript。儘管如此,基本的循環仍然非常快。您在此時正在執行微優化 – 2014-10-28 18:49:09