python - 我们可以说从数学角度来说,Python 代码的时间复杂度比 C 代码更好吗?

标签 python c time-complexity

打印菱形图案的Python代码是:

def main():
n= input('The size of the diamond :: ')    
a=n
for i in range(n):
        print ' '*a,'*'*(2*i-1)
        a=a-1

a=0
p=n
for i in range(n):
        print ' '*a,'*'*(2*p-1)
        a=a+1
        p=p-1

main()

对于类似的输出,C 中的代码是::

#include<stdio.h>
int main()
{
   int i,j;
   int n;
   printf("---PATTERN---\n");
   printf("enter the number of rows :: \n");
   scanf("%d",&n);
   for(i=0;i<=n;i++)
   {
       for(j=n;j>i;j--)
        {
           printf(" ");
        }
       for(j=0;j<2*i+1;j++)
       {
          printf("*");
       }
       printf("\n");
   }
    i=0;
   for(i=0;i<=n;i++)
   {

       for(j=0;j<i;j++)
       {
          printf(" ");
       }
       for(j=2*n-1;j>=2*i-1;j--)
       {
          printf("*");
       }
    printf("\n");
 }

return 0;
}

我的问题是:我们能说从数学角度来说,Python 代码的时间复杂度比 C 代码更好吗? 虽然C程序的运行时间比Python少,但Python中的同一程序不像C那样涉及循环嵌套,我们是否可以说从结构上来说Python是一种更高效的语言? -如果这个疑问听起来很愚蠢,我很抱歉。

最佳答案

Can we say that Mathematically the time complexity of the code in python is better than that of C?

不,你不能。代码相对于机器(甚至是理论上的)的时间复杂度取决于机器最终做什么(解决问题所花费的时间),而不是你如何告诉要做什么,即 C 和 Python 是多种方法中的两种告诉它做什么。但是,我建议您编译 Python code to C然后对照您的 C 程序进行检查,通过该程序您将比较苹果而不是橙子。更好的是,将它们都编译(并链接)为二进制文件并反汇编它们以验证您的假设,看看两者实际上都在循环。

Python does not involve nesting of loops

这只是 Python 作为一种语言提供的语法糖;然而,在幕后,它也会循环,就像其他答案提到的那样。

can we say that structurally Python is a more efficient language?

不,因为结构是风格问题而不是效率问题。

如果您考虑的是性能(时间)或内存效率,那么它不是语言本身的固有性质,而是语言的实现以及它在给定架构上的执行情况;这再次应该被测量而不是假设/猜测。以Lua为例,同一种语言有不同的解释器(实现),其中few are remarkably faster than the others 。因此,效率是实现的问题,而不是语言本身的问题。

关于python - 我们可以说从数学角度来说,Python 代码的时间复杂度比 C 代码更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116213/

相关文章:

python - 树莓派led不闪烁

Python decimal.Decimal - getcontext().prec 设置和输出中的小数位数

python - Django/Apache/Mod_WSGI - 静态文件的 HTTP 404 错误

c++ - unordered_set<int>::iterator it+n 的时间复杂度是多少?

algorithm - 当维基百科说在动态数组末尾插入一个项目的复杂性是 O(1) 摊销时,它是什么意思?

python - Django View 中的原始 SQL 查询

c - C 中的总计

c - 读写文件内容10次

c - 什么是论证评估?

c# - 为了优化