为什么要对固定长度(例如只有五个元素的数组)进行排序,成本o(1)



我的理解是,n固定时,排序n元素的成本为o(1)。

例如,在对线性时间中位数查找算法的解释中,它说:

# Next, we sort each chunk. Each group is a fixed length, so each sort
# takes constant time. Since we have n/5 chunks, this operation
# is also O(n)

https://rcoh.me/posts/linear time-median-finding/

我不明白为什么。我应该想象有一个涵盖所有可能的功能5!元素如何定位的组合?

大o符号用于描述随着输入的增长,运行时间或空间如何增长。如果您要排序的事物数量不会随着输入的增长而增长,那么您评估的算法的排序步骤是O(1)

示例:假设您的输入是一个长度n >= 10的数组,您的输出是相同的数组,但前10个元素按顺序排序,其余的则没有变化。然后,由于您花费的时间不会随着输入的增长而不会增长(随着n变大),因此排序步骤为o(1)。

根据定义,任何有限的运行时间都被认为是恒定的。

例如,解决十亿个城市的旅行推销员问题需要恒定的时间。

这是因为Big-O符号无需时间单元(不涉及实际计算机),并且任何固定金额等于1。

一个很好的做法,让您了解为什么(作为遵循别人告诉您的内容的替代方案)可能是分析日常工作的复杂性。/em>要定义排序5个元素的复杂性,而另一个当然是给定的方式。然后将分析应用于几个不同的输入长度,然后看看哪个更有意义。

最新更新