C++ C+的时间复杂度+;不能?

C++ C+的时间复杂度+;不能?,c++,time-complexity,C++,Time Complexity,做一个cout的时间复杂度是多少每次需要新行时使用std::endl似乎是一个常见的错误。这并不一定是错误的,因为它会破坏流中的内置缓冲,因为它会在每次插入流时刷新流缓冲。每次需要新行时使用std::endl似乎是一个常见错误。这并不一定是错误的,因为它会破坏流中的内置缓冲,因为每次将流缓冲插入流时,它都会刷新流缓冲。time complextiy of Couttime complextiy of Cout C++复杂度的时间复杂度

做一个
cout的时间复杂度是多少每次需要新行时使用std::endl似乎是一个常见的错误。这并不一定是错误的,因为它会破坏流中的内置缓冲,因为它会在每次插入流时刷新流缓冲。

每次需要新行时使用std::endl似乎是一个常见错误。这并不一定是错误的,因为它会破坏流中的内置缓冲,因为每次将流缓冲插入流时,它都会刷新流缓冲。

time complextiy of Couttime complextiy of Cout <> C++复杂度的时间复杂度<?
cout
的时间复杂度为O(1)。它可以由一个常量绑定,而不依赖于示例中的数据。为了更好地估计,我们需要查看插入操作符内部发生了什么。对于整数输出的例子,我猜它是经典的除法输出,所以它也是O(1)。复杂性不会随着编号
i
的增加而增加

(inti=0;i<1000000;i++)的
的时间复杂度也是O(1),但常数在1000000时很大。复杂性不会随着数据大小的不同而增加

加起来,1000000·O(1)仍然是O(1)


通常你不想要这么大的常数。然而,我见过一些算法,其中常数1000000比指数增长更好。例如,我记得看到一个算法在O(n3)中运行1000000·O(n)O(n3)更好≥ 1000左右。另见


我不太愿意指给你看,不过你不妨看一看。被接受的答案是错误的,而且所有的投票似乎都来自那些不知道算法分析细节的人。这个问题有更好的答案

<> C++复杂度的时间复杂度<?
cout
的时间复杂度为O(1)。它可以由一个常量绑定,而不依赖于示例中的数据。为了更好地估计,我们需要查看插入操作符内部发生了什么。对于整数输出的例子,我猜它是经典的除法输出,所以它也是O(1)。复杂性不会随着编号
i
的增加而增加

(inti=0;i<1000000;i++)的
的时间复杂度也是O(1),但常数在1000000时很大。复杂性不会随着数据大小的不同而增加

加起来,1000000·O(1)仍然是O(1)


通常你不想要这么大的常数。然而,我见过一些算法,其中常数1000000比指数增长更好。例如,我记得看到一个算法在O(n3)中运行1000000·O(n)O(n3)更好≥ 1000左右。另见



我不太愿意指给你看,不过你不妨看一看。被接受的答案是错误的,而且所有的投票似乎都来自那些不知道算法分析细节的人。这个问题有更好的答案。

您可以测量它,它因平台和硬件而异。这是微不足道的:任何指令都消耗时间,甚至至少在一些纳米级上。C++标准没有指定过载的复杂性。没有它,循环肯定会更快;而且编译器很可能会完全删除剩余的无用的绿巨人。如果你在NASA给卡西尼号写指令呢?数据需要几个小时才能到达那里…为什么这个问题得到-1?是的,如果没有你循环的全部内容,你的循环会更快。因为它不会做任何事情。你可以测量它,它因平台和硬件而异。这是微不足道的:任何指令都消耗时间,甚至至少在一些纳米级上。C++标准没有指定过载的复杂性。没有它,循环肯定会更快;而且编译器很可能会完全删除剩余的无用的绿巨人。如果你在NASA给卡西尼号写指令呢?数据需要几个小时才能到达那里…为什么这个问题得到-1?是的,如果没有你循环的全部内容,你的循环会更快。我想这就是我在回答中说的。。“为了更好地估计,我们需要看看插入操作符内部发生了什么。”@PavanChandaka关于评论,你没有回答问题,你甚至没有给出如何找到答案的指示,你只是说:“我们需要看看插入操作符内部发生了什么”。此外,通常算法复杂度不依赖于输入,例如,如果一个算法是O(n),给定n=10或n=10000,那么复杂度将保持为O(n)。你的意思是说别的吗?如果你在插入中打印一些东西(我想这是我在回答中说的…“为了更好地估计,我们需要看看插入操作符内部发生了什么。”@PavanChandaka关于评论,你没有回答这个问题,你甚至没有给出如何找到答案的指示,你只是说:“我们需要看看插入运算符内部发生了什么”。此外,通常算法复杂度不取决于输入,例如,如果算法是O(n),给定n=10或n=10000,则复杂性将保持为O(n)。您是想说别的吗?如果您正在打印插入中的内容(
for(int i = 0; i < 1000000 ;i++){
     std::cout << i << endl;
}
ostream& operator<<(ostream& os, const "yourType"& T)