您的位置:首页 > 职场人生

玩转算法面试-数据规模,时间复杂度,均摊复杂度

2017-10-16 18:09 351 查看

数据规模



时间复杂度

并不是所有的双层循环都是O(n^2)的



复杂度实验来确定复杂度



// O(N) 两倍增加
int findMax( int arr[], int n ){

assert( n > 0 );

int res = arr[0];
for( int i = 1 ; i < n ; i ++ )
if( arr[i] > res )
res = arr[i];

return res;
}




随后,O(n^2),数据规模乘二,时间复杂度乘4……

随着数据的增加,可以看到O(logN)



递归算法时间复杂度分析

不是有递归的函数就一定是O(nlogn)

深入:主定理



均摊复杂度(Amortized Time)

动态数组(Vector)每一个操作增加一个元素,删除一个元素相应的复杂度,就需要Amortized Time

动态栈,动态队列类似(数组)

复杂度震荡

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: