![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 65
Damon_X
这个作者很懒,什么都没留下…
展开
-
C++的性能优化实践
内容目录:1 Gprof 2. gprof使用步骤 1.初始化大对象耗时 2.Map使用不当优化准则:1. 二八法则:在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的;在优化实践中,我们将精力集中在优化那20%最耗时的代码上,整体性能将有显著的提升;这个很好理解。函数A虽然代码量大,但在一次正常执行流程中,只调用了一次。而另一个函数B代码量比A小很多,但被调用了1000次。显然,我们更应关注B的优化。2. 编完代码,再优化;编码的时候总是考虑最佳性能转载 2021-07-28 10:44:31 · 355 阅读 · 0 评论 -
【日常杂记】for(int i=1;i<n;i=2*i)的时间复杂度
问题:求如下代码的时间复杂度for(int i=1;i<n;i=2*i){ cout<<"Hello!"<<endl;}解:第一次循环:i=1第二次循环:i=2i=2第三次循环:i=2i=2*2=22…第k次循环(最后一次):i=2k-1最后一次决定了2k-1<n<2k,两边取2的对数,得到:k-1<log2n<k,也就是:log2n<k<log2n+1因此:这段代码执行了k次基本操作(打印字符串),即:...转载 2021-07-28 10:03:16 · 2534 阅读 · 0 评论 -
(数据结构)十分钟搞定时间复杂度(算法的时间复杂度)
我们假设计算机运行一行基础代码需要执行一次运算。int aFunc(void) { printf("Hello, World!\n"); // 需要执行 1 次 return 0; // 需要执行 1 次}那么上面这个方法需要执行 2 次运算int aFunc(int n) { for(int i = 0; i<n; i++) { // 需要执行 (n + 1) 次 printf("Hello,转载 2021-07-28 09:13:31 · 276 阅读 · 0 评论 -
递归和尾递归的区别
以递归方式实现阶加函数的实现: int recsum(int n) { if (n < 0) return 0; else if(n == 0 || n == 1) return 1; else return n + recsum(n - 1); } 以尾递归方式实现阶加函数的实现: int tailrecsum(int n, int res=0) { if (n < ...转载 2021-02-15 21:20:16 · 210 阅读 · 0 评论