如何评价算法的优劣
评价算法的优劣
假设每行代码的执行时间都是一样的,我们用 1颗粒时间 来表示,那么这个例子的 第一行耗时是1个颗粒时间, 第三行的执行时间是 n个颗粒时间, 第四行的执行时间也是 n个颗粒时间(第二行和第五行是符号,暂时忽略), 那么总时间就是 1颗粒时间 + n颗粒时间 + n颗粒时间 ,即 (1+2n)个颗粒时间, 即: T(n) = (1+2n)*颗粒时间, 从这个结果可以看出,这个算法的耗时是随着n的变化而变化,因此,我们可以简化的将这个算法的时间复杂度表示为:T(n) = O(n) 如果n无限大的时候,T(n) = time(1+2n)中的常量1就没有意义了,倍数2也意义不大。因此直接简化为T(n) = O(n) 就可以了。
空间复杂度:一个算法的空间复杂度 S(n) 定义为该算法所耗费的存储空间 列如: int[] m = new int[n] for(i=1; i<=n; ++i) { j = i; j++; } 这段代码中,第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间,因此,这段代码的空间复杂度主要看第一行即可, 即 S(n) = O(n)

浙公网安备 33010602011771号