这个执行频率是怎么算?

转载 2016年08月31日 10:42:11

读segmentfault,看到一段有关于算法分析的代码,带着注释:

public class ThreeSum
{
    public static int count(int[]a)
    {
        // 统计和为0的元组数量
        int N = a.length;
        int cnt = 0;
        for (int i =0;i<n;i++)    //1
            for(int j=i+1;k<n;j++)  //执行频率N
                for(int k =j+1;k<n;k++) //执行频率略等于n^2/2
                    if(a[i]+a[j]+a[k]==0)//执行频率略等于n^3/6
                        cnt++;
        return cnt;            
    }
    public static void main(String[]args)
    {
        int [] a = In.readInts(args[0]);
        StdOut.println(count(a));
    }
}

代码干的事情就是获取一组数字然后去找三个和为0的元组数量。想问的是这个执行频率是怎么计算的?

for (int i =0;i<n;i++)    //1
            for(int j=i+1;j<n;j++)  //执行频率N
                for(int k =j+1;k<n;k++) //执行频率略等于n^2/2
      

你可以这样来看,如下:
n=1,第一个for循环执行1次,第二个for循环执行0次,第三个for循环不执行,共执行1次。
n=2,第一个for循环执行2次,第二个for循环执行1次,第三个for循环不执行,共执行3次。
n=3,第一个for循环执行3次,第二个for循环执行2次,第三个for循环执行1次,共执行6次。
.....
依次类推:
你看这个就是前n项和的求和公式嘛:(1+n)*n/2 = n^2/2

这注释应该是从外到内求值计算.

for(i=0; i<n; i++)//执行1次,指该循环执行一次
{//循环体内执行n次
}

定理1:
前n项和


定理2:


推演通用公式:

for (int i =0;i<n;i++)    //1指循环体执行一次
    for(int j=i+1;k<n;j++)  //N指该语句执行N次
        for(int k =j+1;k<n;k++) //n^2/2:前N项和的定理1
            if(a[i]+a[j]+a[k]==0)//n^3/6:1/2(n^2)中的n^2的前n项和为n^3/3再乘以1/2
                cnt++;

https://segmentfault.com/q/1010000006758450

相关文章推荐

MySql(27)------如何了解数据库各种sql的执行频率

对于sql优化时,首要的一步就是要分析一下,平台sql各种类型的执行频率。 通过SHOW [session|global] STATUS LIKE 'Com_%';查看各种sql的执行频率。 默认...
  • yhl_jxy
  • yhl_jxy
  • 2016年09月19日 09:35
  • 1333

控制shell脚本执行频率、解决shell脚本不能修改环境变量等问题

问题描述:这几天室友遇到一个麻烦,他写的一个shell脚本在事件触发时总是被执行多次而出错,他想要控制脚本的执行次数,即每次触发仅执行一次就行了。懒得去研究为什么被多次触发,希望仅仅在脚本内部写几行代...

动态改变Spring定时任务执行频率

http://localhost:8081/Cg/task/update.do 动态改变Spring定时任务执行频率 一.引入     由于公司门户系统需要定时推送数据进国家平台,所以首先想到的是利用...

Mysql通过show status 命令了解各种SQL 的执行频率

MySQL 客户端连接成功后,通过show [session|global]status 命令可以提供服务器状态信 息,也可以在操作系统上使用mysqladmin extended-status 命...

动态改变spring定时任务执行频率

http://blog.csdn.net/qq_27063119/article/details/54926406 *****************************************...

GCOV 统计每一行代码的执行频率

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Content   ...
  • kelsel
  • kelsel
  • 2016年10月08日 16:52
  • 269

MySQL优化之如何了解SQL的执行频率

show [session|global] status 可以根据需要加上参数“ session ”或者“ global ”来显示 session 级(当前连接)的统计结果和 global 级(自数据...

YCSB扩展-语句执行频率,执行指定的测试查询语句

ycsb是雅虎开源的一款通用的性能测试工具,该工具的特点是小巧,灵活,扩展性强。本文使用ycsb对MongoDB数据库进行测试,并扩展其原代码使ycsb支持了如下:(1)支持测试语句执行的时间频率,即...

stm32_DMA_DAC输出指定频率正弦波

  • 2017年11月08日 15:07
  • 4.11MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:这个执行频率是怎么算?
举报原因:
原因补充:

(最多只允许输入30个字)