在我看来,我们只是缺少必要的硬件。具体来说,在内存中设计列表结构并不是不可想象的,当你将值写入元素a时,这导致一些信号从0变为1,导致它先前将a的值写入a + 1( a的输出自动连接到+ 1的输入,你只需要增加一些东西来触发写入),并且这个传播速度非常快(比执行其他操作要快得多),因此大致有一个O(n log n)算法(当然,当你得到非常大的n时,这个传播需要n次,所以它仍然是一个O(n ^ 2)算法,但在我看来,对于小n,这个应该是可能的。
答案 0 :(得分:0)
Big-O符号与速度本身无关。本质上,它捕获函数的渐近行为。如果该函数描述了算法的运行时间,则Big-O表示法描述了它的渐近增长顺序。
当然,当你得到非常大的n时,这个传播需要n次,所以它确实是一个O(n ^ 2)算法
这没有意义。插入排序的时间复杂度不依赖于输入大小;运行时间可能会有所不同,具体取决于具体输入值,但插入排序仍然分别为最佳或最差情况下运行Ө(n)或Ө(n²)。
请注意,如果算法在T(n)=n²+ 2 100 中运行,则仍为O(n²)。如果算法为你做O(n²)并且之后计算pi的前十亿个数字,它仍然是O(n²),前提是后面的计算独立于输入大小n 。
最后,引用Cormen等人的算法导论,3 rd :
在我们分析算法之前,我们必须有一个模型 我们将使用的实现技术,包括模型 该技术的资源及其成本。
在评估算法的运行时间之前,您需要就将要使用的计算机的一般模型达成一致。因此,硬件考虑因素是该协议的一部分。