我正在阅读"算法简介",作者提到"严密的代码"几次。 "紧张"只是意味着与另一个算法相比,实现一个算法的代码更少?
在书中,作者说插入排序和快速排序都有严格的代码和#34;这使算法更快。例如,尽管快速排序的时间复杂度相同,但快速排序通常比排序更快。
当然,我没有想到"严密的代码"意味着编写没有正确格式的代码,额外的空格,空行。
答案 0 :(得分:5)
紧密的代码意味着时间复杂度的常数很小。当你谈到算法并告诉它是O(n^2)
时,这意味着对于非常大的数字,它会以二次方式增长。这可以是1/2*n^2
,但可以是10^7 * n^2
或c * n^2
。
因此,当c
很小时,这意味着算法或代码很紧。很明显,在您的算法中,您希望它尽可能地紧密。
答案 1 :(得分:2)
Quicksort和heapsort都具有时间复杂度,用大O符号O(nlogn)表示。是什么让Quicksort在实践中比heapsort更快,它的常数被大O分析所忽略。 Tightcode指的是那个常数。
例如,假设有一个循环处理n(大输入)次,并且每次需要k单位时间来处理。因此,总处理时间将是T(处理时间)= k * n(单位时间)。但是,在大O算法分析中,我们只关心算法的增长率(处理时间随着输入大小的增加而增加多少)。因此,这个循环的时间复杂度将是O(n),并且n代表一个大的输入大小。这样我们忽略k,这是一个不会增长的常数。 所以这本书大致意味着在实践中,quciksort的k小于heapsort。 如果您对为什么快速排序更快感兴趣,链接在哪里:Quicksort superiority over Heap Sort 祝你好运!