- 5
- 0
- 约3.1千字
- 约 33页
- 2022-06-09 发布于北京
- 举报
第11章 算法分析与设计;11.1 算法分析技术
评价一个算法的好坏,主要看执行算法时所需要占用的计算机空间的大小和计算过程需要花费的计算机CPU时间的多少。因此,算法的分析主要包含时间和空间两个方面。
11.1.1 空间代价分析
11.1.2 时间代价分析
;11.1.1 空间代价分析
根据算法执行过程中对存储空间的使用方式,我们又把对算法空间代价分析分成两种情形:静态分析和动态分析。;2. 动态分析
;例11.2 快速排序是一递归过程,调用该过程时,需分配的空间包括局部变量i,j和temp,形式参数1,r和被排序的对象等。被排序对象用指针方式传递,调用时不必动态开辟新的空间,只须少量空间存放实参的地址等信息,所以递归调用时动态分配的空间与待排序记录的个数n无关,为一常量。递归深度h最大等于n,这时动态空间代价为O(n),若每次都选较短的部分先处理,则递归深度不会超过log2n,这时动态空间代价即为O(log2n)(参看算法7.9)。这里实际被排序对象的空间应算静态空间,显然是O(n)。 ; (ⅰ)没有使用free函数
此时,动态空间代价为O(k),k为使用malloc的次数。
(ⅱ)使用free函数
不能简单的用malloc使用的次数减去free的使用次数作为动态空间的代价,应从malloc和free的具体执行情况来分析。
原创力文档

文档评论(0)