[英]Big-O notation check understanding
我想檢查一下我對Big-O符號的理解。 如果我有代碼:
for(int bound = 1; bound <= n; bound *= 2){
for( int i = 0; i < bound; i++) {
for(int j = 0; j < n; j += 2){
.....Code
}
for(int j = 1; j < n; j *= 2){
......Code
}
}
}
N 3的Big-O符號是什么?
不完全的。 外循環增量bound *= 2
,因此循環為O(log n)。 兩個內部循環( i
和第一個j
循環)都是O(n),因此嵌套時它們是O(n 2 )。 (您可以忽略j *= 2
內部循環,因為它比j += 2
循環快,並且不會顯着影響程序的運行時間。)
將所有內容放在一起,整個程序為O(log n * n 2 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.