2013-05-08 2 views
0

몇 가지 연구를했지만 좋은 기사를 찾지 못했습니다.
그 후에 내가 그것을 인쇄하고, 하나 Vector에 여러 Vectors를 추가하고 :Iterator를 사용하는 BigO 벡터

Iterator it =vector.iterator(); 
    while(it.hasNext()){ 
     System.out.println(it.next()); 
    } 

어떻게이 기능에 대한 큰-O 표기법을 결정합니까? 예를 들어
는 출력 인 경우 :

[뭔가 뭔가 뭔가 뭔가]
[뭔가 뭔가 뭔가 뭔가 뭔가]
[뭔가 뭔가 뭔가 뭔가 뭔가 무언가]
[뭔가 뭔가 뭔가 뭔가 뭔가 뭔가, 뭔가 ]
[뭔가 뭔가 뭔가 뭔가, 뭔가 뭔가 뭔가 뭔가]

그리고 각 줄을 이해하지 못하는 것은 벡터입니다. 주 벡터의 경우 루프가 필요하지만 내부 벡터의 경우 루프가 필요하지 않습니다. 이유는 무엇입니까? 당신의 (a Vector 같이) 컬렉션 toString를 호출 할 때

+3

'O (n)''n '은 벡터의 크기입니다. 그처럼 간단합니다. – jlordo

+0

질문은 약간 불분명합니다. 인쇄물을 크게 표기하려는 경우 수행중인 작업 수를 살펴 봐야합니다. 당신의 벡터에 N 개의 원소가 있다고 가정하면, 인쇄물은 O (N)을 점근 적 등식 (큰 O 표기법)으로 가질 것입니다. –

+0

주된 다른 벡터들은 어떻게됩니까? – Azad

답변

2

는 해당 컬렉션의 모든 요소의 toString의 대괄호로 묶인 쉼표로 구분 된 목록을 얻을.

그럼, 코드가하고있는 것은의 모든 VectortoString를 호출하는 것입니다 주 차례로 모든 요소에 toString를 호출 Vector. 따라서 효율은 O (n)입니다. 여기서 n은 toString이 호출되는 객체의 총 수입니다. 당신이에 allways이 "사다리 패턴"에 따라 가정

+0

그래서 모든'vector.get (i)'는 그 색인에있는 원소를 돌려 줄 것입니다 .'toString()'? – Azad

1

: 첫 번째 벡터의 크기는 1, 마지막 벡터의 크기가 합계 수식을 사용하여, K의 경우

를, 복잡성은 다음과 같습니다

K*(K+1)/2 
첫 번째 벡터의 크기가 K < K의 경우 지금

, 우리는이 :

K(K+1)/2 - (k-1)(k)/2 

을 마지막으로, 우리는 크기의 "사다리 패턴"하지만 N 벡터를 해달라고 경우K, 복잡도 :

K*N 

희망이 있습니다.

관련 문제