我们今天在课堂上做了一个关于大O表示法的练习.这是一个问题:
void modifyArray(int a[],int size)
{   
    int max = a[0];
    for (int i = 1; i < size / 2; ++i)
    {
        if (max < a[i])
        max = a[i];
    }
    for (int j = 1; j <= size * size; ++j)
    {
        ++max;
        cout << max;
    }
}

我的直觉告诉我,f(n)= n / 2 n2 = O(n2),但根据我的教授,答案只是O(n).有没有人可以向我解释为什么,当我们只是改变我们认为是输入大小的时候?

我明白这不是一个嵌套循环 – 这不是令我困惑的.我不明白为什么给定的输入大小,第二个循环只被认为是O(n).我可以理解这一点的唯一方法是如果我们隔离第二个循环,然后将输入大小重新定义为简单的n = size ^ 2.我在正确的轨道上吗?

解决方法

如果你所提供的代码正是您教授评论的代码,那么他错了.如所写的,它输出每个数字从1到大小*大小,这绝对是O(n ^ 2),因为n =大小是理想的选择.

是的,你是对的,认为你可以说“O(n)”,其中n是数组大小的平方“,但这是没有目的的复杂性.

如其他人所说,如果cout < max被删除,编译器可以将循环优化为单个O(1)赋值,这意味着函数的其他O(n)操作决定了整体的大O效率,但可能不会 - 谁表示你甚至能够进行优化?因此,描述大O效率的最佳方法是说“如果优化踢在O(n)else O(n ^ 2)” - 这是无用的一个或另一个然后隐藏你的假设,而后果如果错了,在脚注中.

c – 混淆大O符号(具体示例)的更多相关文章

  1. swift – 不能调用非函数类型’CIImage?’的值?

    用Xcode游乐场测试7.1.1.和Swift2.1这是因为,一旦进入UIImage,CIImage一词被视为UIImage的CIImage财产,由于隐含的自我作为消息收件人–换句话说,Swift将你的CIImage变成self.CIImage,从那里下降.您可以通过Swift使用模块命名空间来消除歧义:编辑在Swift3中,这个问题会消失,因为所有的属性将以小写字母开始.该属性将被命名为ciImage,并且不会与CIImage类混淆.

  2. android – 如何告诉Proguard混淆类名

    更新:我已经删除了上面的规则,并且没有从Android扩展任何东西的Utility类没有被混淆.我现在想知道是否有一些隐含的规则来保持类的类名被保存为类派生类的类?

  3. Android使用插件实现代码混淆

    这篇文章主要介绍了Android如何使用插件实现代码混淆,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下

  4. 被这个PHP异常混淆了try..catch嵌套

    我被以下代码困惑:我会期望这样输出:而是输出:有人可以解释为什么它“跳过”catch?谢谢.异常处理程序捕获其try块范围内的代码引发的异常.对$a->somethingElse()的调用不会发生在与跳过的异常处理程序相关联的try块中.它发生在另一个catch子句中.只是因为它出现在物理下方,引发异常不足以使其覆盖该代码.缩进括号的风格选择使这一点不那么清楚.即使它们是不相关的范围,上一个try块的关闭括号与下一个catch一样出现在同一行上.

  5. 正则表达式 – 与R中的区域设置混淆

    似乎是编码问题.考虑:

  6. 混淆简单的变量声明jQuery“$variable”vs javascript“var”

    我一直认为“varx”与“$x”相同..?没有“jQuery变量”和“非jQuery变量”这样的东西。>$injQuery是一种特殊的。这不是特别的只是jQuery已经声明了一个名为“$”的变量,它会做一些奇特的操作。它是一个与“x”不同的变量,它不是“jQuery变量”。它只是一个名为“$x”的JavaScript变量。)所以你可以把它称为“值”而不是“$value”。可能的事实是,通过将“var”改为全局变量来删除“var”对于“这个”,是的,这是JavaScript的一个棘手的方面,可能会导致你的问

  7. 混淆javascript属性?

    我最近测试了UglifyJS和YUICompressor并发现了一些奇怪的东西.两个minifiers似乎都没有改变对象属性的名称,只改变变量和函数的名称.例如,如果我有以下代码:第一个和第二个名称在缩小版本中保持不变.这是为什么?解决方法这是因为它不知道对象的使用位置.它可以在其他代码的外部使用,并且您不希望其他代码在您对其进行模糊处理时进行更改.编辑所以基本上,这就是为了防止模糊处理破坏对混淆时可能无法弄清楚的属性的外部/内部引用.

  8. c – 混淆大O符号(具体示例)

    我们今天在课堂上做了一个关于大O表示法的练习.这是一个问题:我的直觉告诉我,f=n/2n2=O,但根据我的教授,答案只是O.有没有人可以向我解释为什么,当我们只是改变我们认为是输入大小的时候?我明白这不是一个嵌套循环–这不是令我困惑的.我不明白为什么给定的输入大小,第二个循环只被认为是O.我可以理解这一点的唯一方法是如果我们隔离第二个循环,然后将输入大小重新定义为简单的n=size^2.我在正确的轨道上吗?

  9. jquery – map()get()混淆

    我只是通过jQueryAPI,我有点困惑在map()&get()方法。我知道我错了,但map()方法看起来很像一个.each()语句?除了文档说它返回一个新的jQuery对象。here是jsfiddle链接:这里还有代码片段:我看到他们正在使用prototype创建一个名为equalizeHeights()的函数来扩展jQuery。有人会在这段代码中详细说明map()和get()在做什么吗?解决方法基本面有两个不同的jQuerymap()函数:.map()和$.map().它们执行类似的事情,但是在不同的

  10. c# – eazfuscator公共成员没有混淆

    我正在尝试使用eazfuscator.net混淆.net项目.问题是,当我使用.NETReflector对其进行反编译时,您可以看到很多代码.所有私人成员都是混淆的,但公众成员提供了有关该计划的大量信息.是否有可能混淆我图书馆的公众成员?我已经尝试过使用ObfuscationAttribute但它确实没有任何区别.那么有可能用eazfuscator或其他工具做类似的事情吗?

随机推荐

  1. 从C到C#的zlib(如何将byte []转换为流并将流转换为byte [])

    我的任务是使用zlib解压缩数据包(已接收),然后使用算法从数据中生成图片好消息是我在C中有代码,但任务是在C#中完成C我正在尝试使用zlib.NET,但所有演示都有该代码进行解压缩(C#)我的问题:我不想在解压缩后保存文件,因为我必须使用C代码中显示的算法.如何将byte[]数组转换为类似于C#zlib代码中的流来解压缩数据然后如何将流转换回字节数组?

  2. 为什么C标准使用不确定的变量未定义?

    垃圾价值存储在哪里,为什么目的?解决方法由于效率原因,C选择不将变量初始化为某些自动值.为了初始化这些数据,必须添加指令.以下是一个例子:产生:虽然这段代码:产生:你可以看到,一个完整的额外的指令用来移动1到x.这对于嵌入式系统来说至关重要.

  3. 如何使用命名管道从c调用WCF方法?

    更新:通过协议here,我无法弄清楚未知的信封记录.我在网上找不到任何例子.原版的:我有以下WCF服务我输出添加5行,所以我知道服务器是否处理了请求与否.我有一个.NET客户端,我曾经测试这一切,一切正常工作预期.现在我想为这个做一个非托管的C客户端.我想出了如何得到管道的名称,并写信给它.我从here下载了协议我可以写信给管道,但我看不懂.每当我尝试读取它,我得到一个ERROR_broKEN_P

  4. “这”是否保证指向C中的对象的开始?

    我想使用fwrite将一个对象写入顺序文件.班级就像当我将一个对象写入文件时.我正在游荡,我可以使用fwrite(this,sizeof(int),2,fo)写入前两个整数.问题是:这是否保证指向对象数据的开始,即使对象的最开始可能存在虚拟表.所以上面的操作是安全的.解决方法这提供了对象的地址,这不一定是第一个成员的地址.唯一的例外是所谓的标准布局类型.从C11标准:(9.2/20)Apointe

  5. c – 编译单元之间共享的全局const对象

    当我声明并初始化一个const对象时.两个cpp文件包含此标头.和当我构建解决方案时,没有链接错误,你会得到什么如果g_Const是一个非const基本类型!PrintInUnit1()和PrintInUnit2()表明在两个编译单元中有两个独立的“g_Const”具有不同的地址,为什么?

  6. 什么是C名称查找在这里? (&amp;GCC对吗?)

    为什么在第三个变体找到func,但是在实例化的时候,原始变体中不合格查找找不到func?解决方法一般规则是,任何不在模板定义上下文中的内容只能通过ADL来获取.换句话说,正常的不合格查找仅在模板定义上下文中执行.因为在定义中间语句时没有声明func,并且func不在与ns::type相关联的命名空间中,所以代码形式不正确.

  7. c – 在输出参数中使用auto

    有没有办法在这种情况下使用auto关键字:当然,不可能知道什么类型的.因此,解决方案应该是以某种方式将它们合并为一个句子.这可用吗?解决方法看起来您希望默认初始化给定函数期望作为参数的类型的对象.您无法使用auto执行此操作,但您可以编写一个特征来提取函数所需的类型,然后使用它来声明您的变量:然后你就像这样使用它:当然,只要你重载函数,这一切都会失败.

  8. 在C中说“推动一切浮动”的确定性方式

    鉴于我更喜欢将程序中的数字保留为int或任何内容,那么使用这些数字的浮点数等效的任意算术最方便的方法是什么?说,我有我想写通过将转换放在解析的运算符树叶中,无需将表达式转化为混乱是否可以使用C风格的宏?应该用新的类和重载操作符完成吗?解决方法这是一个非常复杂的表达.更好地给它一个名字:现在当您使用整数参数调用它时,由于参数的类型为double,因此使用常规的算术转换将参数转换为double用C11lambda……

  9. objective-c – 如何获取未知大小的NSArray的第一个X元素?

    在objectiveC中,我有一个NSArray,我们称之为NSArray*largeArray,我想要获得一个新的NSArray*smallArray,只有第一个x对象…

  10. c – Setprecision是混乱

    我只是想问一下setprecision,因为我有点困惑.这里是代码:其中x=以下:方程的左边是x的值.1.105=1.10应为1.111.115=1.11应为1.121.125=1.12应为1.131.135=1.14是正确的1.145=1.15也正确但如果x是:2.115=2.12是正确的2.125=2.12应为2.13所以为什么在一定的价值是正确的,但有时是错误的?请启发我谢谢解决方法没有理由期望使用浮点系统可以正确地表示您的帖子中的任何常量.因此,一旦将它们存储在一个双变量中,那么你所拥有的确切的一

返回
顶部