当前位置: 首页 > 知识库问答 >
问题:

什么时候使用O(2^n)算法是合理的?[副本]

涂羽
2023-03-14

由于排序算法有许多不同的选择,在任何示例中使用更高复杂度的算法是否合适?

我能想到的唯一原因是,如果有一个非常短的数组,或者数组非常接近排序,或者只包含几个不同的数字。

共有1个答案

单于飞鸣
2023-03-14

由于排序算法有许多不同的选择,在任何示例中使用更高复杂度的算法是否合适?

如果所关注的大O复杂性是最坏的情况,您肯定不会击中,或者n像您所说的那样很小(例如,n是棋盘上剩下的白棋子的数量),常数因素更重要。

O(2^n)是极端的...您还必须考虑使用它的原因的稳定性--是否有人(包括将来的您)意外地修改了代码,使O(2^n)算法的适用性失效,并在调用时使应用程序有时锁定,而n高于最初的预期,或者数据不太“友好”?

 类似资料:
  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 何时使用和何时使用运算符? Java提供了两个选项来检查分配兼容性。什么时候使用? 问题答案: 我认为官方文档为您提供了答案(尽管以一种非常具体的方式): 此方法与Java语言instanceof运算符动态等效。 我认为这主要是指在运行时处理类型反射的代码中使用。特别是,我想说它的存在是为了处理您可能不事先知道要检查其成员资格的类的类型的情况(尽管这些情况可能很少)。 例如,您可以使用

  • 问题内容: java.util.Random源代码的第294行说 为什么是这样? 问题答案: 该描述并不完全准确,因为0不是2的幂。更好的说法是 当n是2的幂或2的幂的负数或零时。 如果n是2的幂,则二进制中的n是单个1,后跟零。-n为2的补数是倒数+ 1,因此位排成一行 要了解其工作原理,请将二进制补码视为逆+ 1。 因为当您添加一个得到两个的补码时,您会一直进行到一个。 如果n不是2的幂,则结

  • 关于什么时候使用Docker而不是VM的,有什么指导方针吗?(反之亦然) 在我看来,像NGINX、Apache或Redis这样的服务应该是docker,但我不确定是否应该在HPC环境中使用ElasticSearch docker。 Docker总是比VM好吗?

  • 问题内容: 什么时候适合使用AJAX? 使用AJAX的利弊是什么? 回应查德·伯奇(ChadBirch)的回答:是的,我指的是开发“标准”站点时,该站点将利用AJAX的优势,而不会因其应用程序而受挫。以会破坏搜索排名的方式使用AJAX是不可接受的。因此,如果“保持网站完好无损”需要做更多的工作,那将是一个“骗局”。 问题答案: 这是一个相当大的主题,但是您应该使用AJAX来增强用户体验,而不必完全