如果时间复杂度为 N 的算法需要一天处理一些数据,那么时间复杂度为 Nlog(N) 的算法需要多长时间?
If an algorithm with time complexity N takes one day to treat some data, how long would an algorithm with time complexity Nlog(N) take?
我不知道如何回答这个问题,我知道如何找到时间复杂度,但就是无法理解这一点。
时间复杂度表示输入数据的变化率与特定算法处理数据所需时间之间的关系。
这意味着虽然具有线性时间复杂度的算法 A
可能需要 1 天才能完成处理 n == 1000
,但算法 B
也具有线性时间复杂度,可能需要一周才能完成在数量和质量方面明智地完成相同数据的处理。但是当您知道算法 A
是线性的并且需要 1 天才能完成 n == 1000
时,您就会知道 A
大约需要 10 天才能完成 n == 10000
.
现在,您知道一些具有线性复杂度的算法需要一天的时间。给你一个完全不同的算法(我们必须假设它是不同的,因为时间复杂度完全不同),复杂度 n log n
,并要求你猜猜它需要多长时间?你不可能知道。你不知道在起作用的常量。因此,根据您测试过的线性算法做出假设是错误的。
如果您想猜测线性算术算法所花费的时间,您需要测试该算法并根据您对该算法所做的测试做出假设。这是因为,我想强调的是,时间复杂度表达了输入数据数量的变化率与算法完成所需时间之间的关系。该特定算法的时间与其输入之间存在关系。
设m为数据的长度。 O(N) 算法需要 C 次 m = 1 天来处理数据;在这种情况下,C 是一个常数,等于 1 天/米。
现在 O(log N) 算法应该用 C 次 log m 来处理数据。但是,这种情况下的常数C不一定等于第一种情况下的常数C
因此,您无法判断 O log N 算法处理相同数据需要多少时间。时间可能更少、相等或更多。但是,数据越大,第二种算法的性能越好。
我不知道如何回答这个问题,我知道如何找到时间复杂度,但就是无法理解这一点。
时间复杂度表示输入数据的变化率与特定算法处理数据所需时间之间的关系。
这意味着虽然具有线性时间复杂度的算法 A
可能需要 1 天才能完成处理 n == 1000
,但算法 B
也具有线性时间复杂度,可能需要一周才能完成在数量和质量方面明智地完成相同数据的处理。但是当您知道算法 A
是线性的并且需要 1 天才能完成 n == 1000
时,您就会知道 A
大约需要 10 天才能完成 n == 10000
.
现在,您知道一些具有线性复杂度的算法需要一天的时间。给你一个完全不同的算法(我们必须假设它是不同的,因为时间复杂度完全不同),复杂度 n log n
,并要求你猜猜它需要多长时间?你不可能知道。你不知道在起作用的常量。因此,根据您测试过的线性算法做出假设是错误的。
如果您想猜测线性算术算法所花费的时间,您需要测试该算法并根据您对该算法所做的测试做出假设。这是因为,我想强调的是,时间复杂度表达了输入数据数量的变化率与算法完成所需时间之间的关系。该特定算法的时间与其输入之间存在关系。
设m为数据的长度。 O(N) 算法需要 C 次 m = 1 天来处理数据;在这种情况下,C 是一个常数,等于 1 天/米。
现在 O(log N) 算法应该用 C 次 log m 来处理数据。但是,这种情况下的常数C不一定等于第一种情况下的常数C
因此,您无法判断 O log N 算法处理相同数据需要多少时间。时间可能更少、相等或更多。但是,数据越大,第二种算法的性能越好。