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(1)。因此,if 语句中的前三行都是每个 O(1)。然后,该方法递归调用自身,每次函数变得更小,迭代 n(n-1)(n-2)... 次。因此,我认为这个方法的时间复杂度为 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);
}
}