求以下代码的上限和下限

2024-03-18

我需要找到以下代码的最接近的上限和下限。我是这方面的初学者,对我的错误感到抱歉。

p() 的上限为 O(log(n)),下限为 O(1)

notp() 的上限为 O(log(n)),下限为 O(1)

我认为下界是 O(1) 因为如果我有 n=4 那么我进入循环并且因为 n%i==0 我调用 p() 并且它注意到这不是素数所以 O(1)那么由于 i=2,其他 notp 将不会被执行。这是最糟糕的情况。

最坏的情况是我经历循环,以便 log(n) 并执行 p ,上限是 O(log(n)) 所以它是 O(log(n)^2) 但我不太确定这很好,请告诉我哪里出错了?

int i;
for (i = 2; i*i <= n; i++) {
  if (n % i == 0) {
    p();
    break;
  }
}
if(i*i > n)
  notp();

对于阶数计算,当存在循环时,通常会将它们相乘。

for( i = 0; i < n ; i++ ){
     DoSomething(i);
}

那将是 O(n),因为循环是单一情况。

嵌套循环将是

for( i = 0; i < n ; i++ ){ 
    for( j =0; j < n; j++ ){
       DoSomething(i,j);
    }
}

这变成了 O( n^2 ),因为它们是相加的。

如果您有非嵌套循环...

for( i = 0; i < n ; i++ ){
     DoSomething(i);
}


for( j = 0; j < sqrt(n) ; j++ ){
     DoSomething(j);
}

那么 O( x ) 就是最大项。这是因为对于非常大的 n,较小的 x 值并不重要。

因此,您的情况有一个循环,即 O( sqrt( n ) )。这是因为它受到 i *i 小于 n 的限制。

然后将调用 p() 或 notp() 之一。

(我认为 p() 和 notp() 是错误的方式)。

重构你的代码......

int i;
for (i = 2; i*i <= n; i++) {
  if (n % i == 0) {
    /* p(); */
    break;
  }
}
if(i*i > n)
  notp();
else
  p();

所以我们有 O( sqrt(n) ) 时间加上 p / notp 函数,即 O( log(n) )

O( sqrt(n ) + log(n) )

由于 sqrt 的增长速度快于 n,因此它压倒了 log(n)维基百科大O https://en.wikipedia.org/wiki/Big_O_notation,将其保留为最终值。

O( 开方(n) )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

求以下代码的上限和下限 的相关文章

  • 关于在字典中查找所有有效单词的算法问题

    给定一个字典 只是一个字符串列表 您收到来自外部来源的未知数量的信件 给定字母串 您将如何列出您可以通过这些字母的任意组合组成的所有有效单词 来自字典 因此 如果您收到 applead 你应该找到apple bad pad lead等 我知
  • 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

    我正在看维基百科页面 https en wikipedia org wiki Call stack在调用堆栈上 并尝试理解这个图像 据我所知 哈哈 const memory memory 0 3 top of stack pointer m
  • 分而治之策略来确定列表中是否有超过 1/3 的相同元素

    我正在使用分治算法来确定列表中是否有超过 1 3 的元素相同 例如 1 2 3 4 不 所有元素都是唯一的 1 1 2 4 5 是的 其中 2 个是相同的 没有排序 是否有分而治之的策略 我陷入了如何划分的困境 def is valid i
  • 数学组合的完美最小哈希

    首先定义两个整数N and K where N gt K 两者都在编译时已知 例如 N 8 and K 3 接下来 定义一组整数 0 N or 1 N 如果这使答案更简单 并调用它S 例如 0 1 2 3 4 5 6 7 的子集数量S wi
  • 具有多个谓词的 C++11 算法

    功能如std find if来自algorithmheader 确实很有用 但对我来说 一个严重的限制是我只能为每次调用使用 1 个谓词count if 例如给定一个像这样的容器std vector我想同时应用相同的迭代find if 多个
  • 如何从迭代器推导连续内存

    不知何故 本土stl copy VC Dinkumware 上的算法表明它可以使用memcpy 可以轻松复制的数据 一个凡人能做到这一点吗 假设每个元素都是普通可复制的 random access iterator 是否意味着连续内存 标准
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 实施二分查找有哪些陷阱? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 二分查找比看起来更难实现 虽然二分搜索的基本思想相对简单 但细节可能出人意料地棘手 Donald Knuth 新的二分搜索实现中最有可
  • 在java中使用BUBBLE SORT对二维字符串数组进行排序

    类似的问题已经被问过 但从来没有关于二维字符串数组 因此在尝试了很长时间之后我找不到我想要的 我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序 作为输入 我收到一个二维字符串数组 一个表 以及您应该排序的
  • 二维滑动窗口最小值/最大值

    假设我们得到一个大小为 NxN 的像素整数矩阵和一个整数 k 窗口大小 我们需要使用滑动窗口找到矩阵中的所有局部最大值 或最小值 这意味着 如果某个像素与其周围窗口中的所有像素相比具有最小 最大 值 则应将其标记为最小 最大 有一种著名的滑
  • 数学/算法使图像适合屏幕保留纵横比

    我需要数学 算法方面的帮助来拍摄已知尺寸的图像并适合两个屏幕尺寸之一 720 x 480 或 1280 x 1024 图像尺寸来自 XML 文件 但这些尺寸是 Web 尺寸 我还从 XML 中选择了一些图像 这些图像的分辨率可能比 Web
  • 我正在尝试寻找“调酒师算法”

    我正在解决旧编程竞赛中的一些示例问题 在这个问题中 我们输入了我们有多少调酒师以及他们知道哪种配方 每杯鸡尾酒的制作时间为 1 分钟 我们需要计算是否可以在 5 分钟内使用所有调酒师完成订单 解决这个问题的关键是尽可能高效地分配鸡尾酒 这就
  • 使用到达时间差对信号进行三边测量

    我在寻找或实现寻找信号源的算法时遇到一些麻烦 我的工作目标是找到声音发射器的位置 为了实现这一点 我使用了三个麦克风 我正在使用的技术是多点定位这是基于到达时间差 The 到达时间差使用发现每个麦克风之间互相关接收到的信号 我已经实现了算法
  • 查找其索引的乘积可被另一个数字 X 整除的对的数​​量

    给定一个数组和某个值 X 找到满足以下条件的对的数量 i lt j a i a j and i j X 0 Array size lt 10 5 我想这个问题有一段时间了 但只能想出蛮力解决方案 通过检查所有对 这显然会超时 O N 2 t
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • 使用 A 星查找路径的启发式函数

    I am trying to find a optimal solution for the following problem 每个节点内表示的数字表示为 x y 一个节点的相邻节点总是有一个y值为 当前节点 y 值 1 更改的成本为 1
  • 在矩阵/位图中查找质量簇

    这是此处发布的问题的延续 在 2D 位图上查找质心 https stackoverflow com questions 408358 finding the center of mass on a 2d bitmap正如给出的例子 它讨论了
  • 优化重叠矩形的绘制

    我有很多矩形 有些与其他矩形重叠 每个矩形都有一个绝对 z 顺序和一个colour 每个 矩形 实际上是粒子效果 网格或纹理的轴对齐边界框 并且可能是半透明的 但只要您不尝试剔除其他矩形后面的矩形 就更容易抽象地思考彩色矩形 所以我将在问题
  • 压缩很多小字符串的算法?

    我正在寻找一种压缩小 ASCII 字符串的算法 它们包含大量字母 但也可以包含数字和很少的特殊字符 它们很小 平均约为 50 100 字节 最多 250 个字节 例子 Android show EditText setError above

随机推荐

  • 在php中增加不初始化数组值[重复]

    这个问题在这里已经有答案了 海伊 我有一个 foreach 循环 将数组键添加到另一个数组 我想知道增加 使用 和取消初始化元素是否安全 目前我的代码是 foreach SociBdP as id gt socio if isset pro
  • 使用 sed 和 mv 命令取消隐藏 unix 中的隐藏文件

    我想知道你是否可以帮助我修复 bash 脚本 该脚本应该取消隐藏目录中的所有隐藏文件 哪里有问题 param for file in param do mv file echo file sed s 1 done exit This for
  • 在由数字组成的字符串中查找未知的重复模式

    我已经为此苦苦挣扎了一个星期 我有一个像这样的字符串 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 我需要找到什么 1 1 0 示例2 1 1 2 0 2 2 1 0 1 1 2 0 2
  • CodeIgniter flashdata 重定向后不工作

    我已经这样设置闪存数据 this gt session gt set flashdata dispMessage my message is here 我在会话库中找到该消息 但未显示在重定向页面中 我使用的是 codeigniter 版本
  • 将位图图像保存到 SD 卡 - API 1.5 中存在问题?

    知道为什么这不适用于运行 Android API 1 5 的 HTC Hero 吗 private static void Save to SD Bitmap bm String image name String extStorageDi
  • SQLExecDirect 中的游标状态无效,SQL 状态 24000

    我需要在 PHP 中通过 ODBC 依次调用两个存储过程 run stored procedure 1 query Shipped Not Shipped Rep GET rep id result odbc exec dbh query
  • 在自定义类型上使用集合初始值设定项语法?

    我有一个很大的静态列表 它基本上是一个查找表 所以我在代码中初始化该表 private class MyClass private class LookupItem public int Param1 get set public int
  • 垂直 xtick 标签位于顶部,而不是底部

    我想使用 Pylab 绘制混淆矩阵 沿水平轴的类标签很长 所以我想将它们垂直旋转绘制 但是 我也想将它们绘制在轴的顶部 而不是下面 此命令可以在底部绘制垂直标签 pylab imshow confusion matrix pylab xti
  • 访问脚本主模块内定义的python类变量

    我有一个 Django 项目 它使用 celery 进行异步任务处理 我正在使用Python 2 7 我在模块中有一个类client py在我的 Django 项目中 client py class Client def init self
  • 显示Java 8流处理的进度

    我有一个Stream处理数百万个元素 其背后的Map Reduce算法需要几毫秒 因此任务完成大约需要二十分钟 Stream
  • python tkinter如何将按键绑定到按钮

    编程新手 尤其是 python 和 tKinter 如何创建一种将键 s 绑定到按钮或功能的方法sharpen 任何帮助都是极好的 from Tkinter import from PIL import Image ImageTk Imag
  • VHDL 中的 NULL 语句

    其实际目的是什么nullVHDL 中的声明 考虑以下代码 1 CASE s IS BEGIN WHEN 0 gt y lt 0 WHEN 1 gt NULL END CASE 2 CASE s IS BEGIN WHEN 0 gt y lt
  • 如何在 asp.net mvc 中通过自定义 jQuery 验证复选框列表

    我有一个复选框列表 我想在客户端使用 jQuery 进行验证 但失败了 我已经在我的项目中添加了 unobtrusive 和 jquery 验证插件 型号代码为 Required public string name get set Ski
  • 不使用 matlab 提取 .mat 数据 - 尝试 scilab 失败

    我已经下载了一个我感兴趣的数据集 但是 它是 mat 格式 并且我无法访问 Matlab 我用谷歌搜索了一下 它说我可以在 SciLab 中打开它 我尝试了一些东西 但我还没有找到任何关于这方面的好的教程 I did fd matfile
  • Socket.EndRead 0字节表示断开连接?

    我想知道在 C 中的异步套接字中 在 EndRead 调用中接收到 0 字节是否意味着服务器实际上已与我们断开连接 我看到的许多例子表明情况确实如此 但我收到的断开连接比我预期的要频繁得多 这段代码正确吗 或者 endResult priv
  • 使用 DDD 方法在 Python 中保留 POJO

    我正在尝试使用 DDD 模式创建 Flask 应用程序 DDD 的核心原则之一是将领域与持久性 基础设施 分离 我已在模块中定义了域模型 并将在基础设施模块中创建存储库 但是 我似乎找不到任何关于如何在 Python 中持久保存 POJO
  • 如何从 MongoDB 获取数据?

    我正在尝试使用 Express MongoDB 构建 React 应用程序 我能够将一些文档发布到 MongoDB 目前 我正在尝试弄清楚如何将获取的数据打印到屏幕上 我有这些路线 router post totalbalance requ
  • 使用 c 访问 /Private/etc

    这可能是一个简单的问题 但如何在 c 控制台应用程序中向用户 请求 系统 根权限 我需要写信给 Private etc 但我不能 这是针对 mac unix 的 我已经看到它被用在其他控制台命令中 例如当您运行以下命令 sudo Syste
  • 在嵌入式 HSQL 数据库中创建架构的最佳方法

    我目前正在使用以下设置在嵌入式数据库中创建一个架构 然后再针对它运行测试 在我的应用程序上下文中
  • 求以下代码的上限和下限

    我需要找到以下代码的最接近的上限和下限 我是这方面的初学者 对我的错误感到抱歉 p 的上限为 O log n 下限为 O 1 notp 的上限为 O log n 下限为 O 1 我认为下界是 O 1 因为如果我有 n 4 那么我进入循环并且