문제

는 방법을 찾는 알고리즘을 계산하기 위한 합계에 값을 배열??

은 뭔가가 이것을 좋아하는가?

Algorithm Array Sum
Input: nonnegative integer N, and array A[1],A[2],...,A[N]
Output: sum of the N integers in array A
Algorith Body:
j:=1
sum:=0
while j<N
      sum := sum + a[J]
      j:=j+1
  end while
end Algorithm Array Sum

나는 어떻게 관련된 실행 시간의 알고리즘을 사용하여 O-표기

이는 지난해 시험하고 필요한 개정을 위한 시험.

질문
배열 A[]holding n 의 정수 값을 주어
1.을 계산하는 알고리즘을 합의 모든 값을 배열
2.찾는 간단하고 최 O-표기에 대한 실행 시간의 알고리즘이 있습니다.

도움이 되었습니까?

해결책

질문을 찾는 것입 모든 값의 합계 그래서를 반복하는 각 요소에서 편안하고 각 요소를 임시 합계 값입니다.

temp_sum = 0
for i in 1 ...array.length
    temp_sum = temp_sum + array[i]

이를 통해 이동해야의 모든 요소들을 배열이 프로그램에 따라 선형적으로 하는 요소의 수.10 개 있는 경우 요소를 반복을 통해 10 개의 요소가있는 경우,백만 당신은 선택의 여지가 없는 이외의 다른 모든 백만 요소가 추가됩니다.따라서 시간 복잡도는 Θ(n).

는 경우에 당신은 당신을 찾는 합계의 모든 요소를 모르는 것은 데이터에 대해 다음에서 볼 필요가 있어요 모든 요소에 적어도 한 번.따라서 n 은 lowerbound.당신이 또한 필요에 보이지 않는 요소입니다.n 는 또한 상.따라서 복잡성은 Θ(n).

그러나 당신이 알고 있는 경우에 대해 뭔가가 요소..을 받을 말 sequency n 의 자연수,당신은 그것을 할 수 있는 일정 시간(n+1)/2.는 경우에 데이터를 얻을 수 있는 임의의 다음 당신은 선택의 여지가 없지만 위의 선형 시간 알고리즘이 있습니다.

다른 팁

부터 N 배열의 크기이며 당신이해야 할 일은 큰 o 표기법이 O [n]입니다.

integer N= Size_array;
array a[N]
j=1 
sum=0
while j<=N 
 sum += a[j]  
 j++
end while

나는 당신이 "j <= n"을 의미한다고 생각합니다.이를 지정해야합니다.

실행 시간은 O (n)이어야합니다.

이 알고리즘의 O를 계산하려면 각 코드 라인이 실행되는 횟수를 계산해야합니다. 나중에 당신은 기본 운영 만 계산하지만 모든 것을 세는 것으로 시작합니다.

그렇다면 J : = 1 라인은 몇 번이나 실행됩니까? 합계는 몇 번이나 실행됩니까? While Loop의 상태는 몇 번이나 실행됩니까? while 루프 내부의 진술?

이것들을 모두 요약합니다. 당신은 당신이 얻는 값이 1 + 1 + n + n + n = 2 + 3n과 같은 것을 알 수 있습니다. 따라서 N의 선형 함수라고 결론을 내릴 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top