本文摘要

三段代码对比了以线性级别增长的代码(a,b)和以线性对数级别增长的代码(c)的区别;

代码结构

// 输入条件 N
for(; ;)for(; ;)sum ++;

两层for( ; ; )循环,@param sum记录语句执行次数,不同输入条件N,屏幕打印执行次数;

完整源码

// Java Code
public class TestRunningTimes{public static void RunTimes(int N){/* 增长数量级为 线性级别 2N-1 */int suma = 0;for(int n=N;n>0;n/=2)for(int i=0;i<n;i++)suma++;/* 增长数量级为 线性级别 N-1 */int sumb = 0;for(int i=1;i<N;i*=2)for(int j=0;j<i;j++)sumb++;/* 增长数量级为 线性级别 NlgN(以2为底的对数) */ int sumc = 0;for(int i=1;i<N;i*=2)for(int j=0;j<N;j++)sumc++;/* 屏幕打印语句执行次数 输出排版 */           int lgN = (int)(Math.log((double)N)/Math.log((double)2));int nlgn = lgN*N;System.out.printf("%10d %10d %10d %10d %10d %10d\n",N,suma,sumb,lgN,nlgn,sumc);}/* 测试用例 : 不同的输条件 N  */public static void main(String args[]){System.out.println("        N       a        b        lgN        NlgN         c");for(int N=1;N<1000000;N*=2)RunTimes(N);}
}

编译运行


>javac TestRunningTimes.java>java TestRunningTimesN       a        b        lgN        NlgN         c1          1          0          0          0          02          3          1          1          2          24          7          3          2          8          88         15          7          3         24         2416         31         15          4         64         6432         63         31          5        160        16064        127         63          6        384        384128        255        127          7        896        896256        511        255          8       2048       2048512       1023        511          9       4608       46081024       2047       1023         10      10240      102402048       4095       2047         11      22528      225284096       8191       4095         12      49152      491528192      16383       8191         13     106496     10649616384      32767      16383         14     229376     22937632768      65535      32767         15     491520     49152065536     131071      65535         16    1048576    1048576131072     262143     131071         17    2228224    2228224262144     524287     262143         18    4718592    4718592524288    1048575     524287         19    9961472    9961472

结果分析

运行结果符合预期:
a 代码段执行次数为 2N-1;
b 代码段执行次数为 N -1;
c 代码段执行次数为 NlgN(以2为底的对数);

代码心得

手感回春www

[算法]代码运行时间增长数量级对比 线性级别N vs 线性对数级别 NlgN相关推荐

  1. 算法分析(1)-增长数量级分类总结

    算法分析(1) 1.总结,后面的解释其实可以不看 2 常见数量级的补充解释 (1)常数级别 (2)对数级别 (3)线性级别和线性对数级别 (4)平方级以及立方级别 (5)指数级别 3 综述 1.总结, ...

  2. c语言实现线性表的算法,数据结构算法代码实现——线性表的定义(一)

    线性表的定义 线性表:是最常用且最简单的一种数据结构,它是一种线性数据结构,是由类型相同的n个(n≥0)数据元素组成的有序序列. 线性表的特点:有且只有一个被称作"第一个"的数据元 ...

  3. “泰迪杯”挑战赛 - 基于用户协同过滤算法的电影推荐系统(附算法代码)

    目录 第 1 章 绪论 1.1.研究背景 1.2.国际发展形势第 2 章 基于用户协同过滤推荐技术 第 2 章 基于用户协同过滤推荐技术 2.1 电子商务推荐系统概述 2.2 协同过滤推荐技术 第 3 ...

  4. 算法代码_Python进化算法之多目标优化与代码实战

    前言 自从上三篇博客详细讲解了Python遗传和进化算法工具箱及其在带约束的单目标函数值优化中的应用.利用遗传算法求解有向图的最短路径.利用进化算法优化SVM参数之后,这篇不再局限于单一的进化算法工具 ...

  5. LDPC译码算法代码概述

    程序说明 V0.0 2015/1/24 LDPC译码算法代码概述 概述 本文介绍了包括LDPC_Simulation.m, ldpcdecoderbp1.m,ldpcdecoderminsum.m, ...

  6. 【算法】快速排序与归并排序对比

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  7. 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...

    Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...

  8. 算法代码[置顶] 机器学习实战之KNN算法详解

    改章节笔者在深圳喝咖啡的时候突然想到的...之前就有想写几篇关于算法代码的文章,所以回家到以后就奋笔疾书的写出来发表了     前一段时间介绍了Kmeans聚类,而KNN这个算法刚好是聚类以后经常使用 ...

  9. adaboost算法java代码_04-04 AdaBoost算法代码(鸢尾花分类)

    [TOC] 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnblogs.com/nickchen121/p ...

  10. 单片机测量代码运行时间方法-STM32

    在实际程序的编写中,我们经常会对程序进行一个整体的复盘.优化,或者对算法的运行时间进行测量等等,那么怎么精确的测量我们程序的运行时间呢? 下面我们给出几种方法: 1 使用Keil Debug功能 2 ...

最新文章

  1. LeetCode简单题之猜数字大小
  2. php数据库html文本,关于php,mysql,html的数字分页和文本_php
  3. 基于Java的疫情防控管理系统
  4. python fromfile_python之numpy文件操作
  5. 苹果怎么换行打字_停课不停学!推荐苹果电脑学习类软件,丰富您的假期生活...
  6. Pytorch的tensor数据类型
  7. kubeadm安装K8S单master双节点集群
  8. java ajax jquery分页插件_jquery ajax分页插件的简单实现
  9. laravel简单的laragon环境搭建不需要composer一键集成
  10. 全新的移动界面设计素材
  11. 剑指offer题目系列一
  12. UC、火绒联合发布专杀工具 清除 2345 锁首木马
  13. 2021年中国道路交通事故情况分析(附机动车保有量、交通事故发生数量、死亡人数、受伤人数、直接经济损失)[图]
  14. CNN各模块介绍(一)
  15. BZOJ 3097: Hash Killer I【构造题,思维题】
  16. 创建服务器站点的步骤,如何自己建立网站 基本步骤和流程有哪些
  17. PHPoffice PHPword添加水印
  18. 餐饮企业如何在疫情考题中渡过难关?
  19. 什么是僵死进程(Zombies)
  20. 网络信息安全攻防实验室 第三关

热门文章

  1. 读 稻盛和夫《干法》
  2. [原创]威胁猎人 | 2018年上半年短视频行业黑灰产研究报告
  3. Excel4.0宏病毒查看隐藏宏代码
  4. 关于Facebook的28件小事
  5. python音频转文字腾讯_Python生成腾讯云实时音视频的UserSig签名
  6. ros之tf简介[tf-Package Summary]
  7. 怎样用计算机画太极,用IF函数画个太极图
  8. excel图片根据表格内容动态变化
  9. vs2005 应用程序正常初始化失败的解决方案
  10. 空降如何快速融入接管团队