我有一組n個螺母和一組n個螺栓,它們都按大小遞增排列。我需要給出一個O(n)算法來檢查一個螺母和螺栓是否具有相同的尺寸 。螺母尺寸在一個陣列中NUTS [1..n] 螺栓尺寸在一個陣列中BOLTS [1 ... n] 我不需要找到所有匹配,只要停止算法即使一個匹配被發現。在這裏,我的psuedocode看起來像迄今爲止 for each n in NUTS
for each b in B
代碼1: 我我看來這段代碼是O(n^3),因爲外部循環運行N^2次,內循環運行n次。根據我的教授,這個代碼不是O(n^3)。有人能解釋爲什麼嗎?我很困惑。 i, j, sum = 1, 1, 0
while i < n**3:
while j < n:
sum = sum + i
j += 1
i = i + n
代碼2: 我覺得這個代碼爲O(n)。
所以,我知道我在想我的錯誤,但我對所有三段代碼的回答是,他們是O(n^2)。 有人可以告訴我,如果我錯了嗎? 如果是的話,你能幫我想想如何解決類似的問題。先謝謝你! public static int firstLoop(int[] arr) {
int sum = 0; int n = arr.length;
int limit = n * n;
for (
int sum = 0;
for (int i = 0; i*i < N; i++){
for (int j = 0; j*j < 4*N; j++){
for (int k = 0; k < N*N; k++){
sum++;
}
}
}
我知道這個代碼段的增長順序是N^3。但是我需要對此進行適當的解釋。
我不知道這些種類的循環的技術術語(如果存在的話),所以我會提供了一個例子: x=0
i = 1
while(i<n)
for(j=1 to n/i)
x = x + (i-j)
i*=2
return(x)
在這個例子中,while循環,直接改變的次數數for循環運行,這是由於某種原因,我拋棄 通常,我會一行一行地看看每行會運行多少次,但由於次數的變化,我
這是我想要計算時間複雜度的僞代碼,我認爲它是一種二分搜索算法,但是當計算複雜性時我失敗了,因爲它正在減少logarithamic。 USE variables half-array,found,middle element
SET half-array=initial array;
SET found=True;
Boolean SearchArray(half-array