Fork me on GitHub

1. C++完整程序以及递归的时间复杂度

C++ 完整程序

//main.cpp
#include<iostream>
#include<vector>
using namespace std;

int getSum(vector<int> v){
    int res=0;
    int n=v.size();
    for(int i=0;i<n;i++) res+=v[i];
    return res;
}
int main(){
    int n;
    cin>>n;
    vector<int> v(n);
    for(int i=0;i<n;i++){
        cin>>v[i];
    }
    cout<<getSum(v)<<endl;
    
    return 0;
}

递归函数的复杂度

对于递归而言:

\[T(n)=\left\{\begin{matrix} O(1) & n=1\\ kT(\frac{n}{m})+f(n^a) & n>1 \end{matrix}\right. \]

\[T(n) = k^{{log_{m}}^{n}} + \sum_{j=0}^{log_{m}^{n-1}}k^jf(n^a/m^j)=n^{{log_{m}}^{k}} + \sum_{j=0}^{log_{m}^{n-1}}k^jf(n^a/m^j) \]

最终的T(n)复杂度为:

\[T(n) = max(O(n^{{log_{m}}^{k}}), O(n^a)) \]

如果

\[{log_{m}}^{k}=a, T(n)=O(n^alog(n)) \]

posted @ 2020-07-31 13:10  wangzi199  阅读(216)  评论(0编辑  收藏  举报