2
template <typename T>
void reverseVector(vector<T> &vec, int start, int end) {
if(start < end) {
char temp = vec[start];
vec[start] = vec[end];
vec[end] = temp;
reverseVector(vec, start + 1, end – 1); }
}
}
N = vec.size()로 가정하면이 방법의 시간 복잡도는 어떻게됩니까?역방향 벡터에 대한 큰 O의 시간 복잡성
내가 맞다고 가정하면 벡터를 가져오고 설정하는 데 O (1) 시간이 걸립니다. 따라서 if 문의 처음 세 줄은 모두 모두 O (1) 개입니다. 그런 다음이 메소드는 반복적으로 자신을 호출하고 함수가 작아 질 때마다 n (n-1) (n-2) ... 번 반복합니다. 그래서 내 대답은 O (n!)이 방법입니다. 나 맞아?
편집 : 유사한 구문하지만, 연결리스트 O(n)
입니다
template <typename T>
void reverseLinkedList(list<T> &lst, int start, int end) {
if(start < end) {
char temp = lst[start];
lst[start] = lst[end];
lst[end] = temp;
reverseLinkedList(lst, start + 1, end – 1);
}
}
그래서 않습니다 재귀 호출 이 경우 시간 복잡성에 영향을주지 않습니까? – user3521441
전혀 아닙니다. 함수는 "while (start
오케이 .. 빅 오 표기법에 대한 내 이해가 그다지 강하지는 않지만 다소 이해합니다. 이것이 링크 된 목록을 뒤집어 놓은 비슷한 구문을 가진 방법이라면 시간 복잡도는 어떻게 변할 것입니까? – user3521441