总结:顾名思义~
重点:
1. 运行时间随着问题规模增大的增长速度:指数级别 > 立方级别 > 平方级别 >> 线性对数级别 > 现行级别 >> 对数级别 > 常数级别
请结合图1.4.5 典型的增长数量级函数加以理解。
2. 大多数的Java操作所需的时间均为常数。
3. 对数的底数和增长的数量级无关(因为不同的底数仅相当于一个常数因子),所以我们在说明对数级别时一般使用logN。
4. 归并排序所需的比较次数在1/2NlgN到NlgN之间,由此我们立即可知归并排序所需的运行时间的增长数量级是线性对数的。
简单起见,我们将这句简写为归并排序是线性对数的。
5. 平方级别和立方级别的算法对于大规模的问题是不可用的。
许多重要的问题的直观解决时平方级别的,但我们也发现了它们的线性对数级别的算法。
此类算法(包括归并算法)在实践中非常重要,因为它们能够解决的问题规模远大于平方级别的解法能够处理的规模。
因此,在本书中我们自然希望为各种基础问题找到对数级别、线性级别或是线性对数级别的算法。
时间: 2024-10-10 01:13:57