1、例子1
写程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
- 循环实现
- 递归实现
- 测试时间
有一个问题,应该怎么跑这个程序呢?让这里面的N从100,1000,10000…一直往下跑
可以写一个测试代码,先读进来一个N,然后以N为参数去调用这个PrintN函数
2、例子2
写程序计算给定多项式在给定点x处的值
分析知函数的参数需ixh要存储多项式系数的数组、多项式的最高次方数以及输入的给定点x
- 方法1
- 方法2
对多项式进行整理,变为如下形式
3、测试程序运行时间
使用clock()函数,返回值类型为clock_t,需要包含头文件<time.h>
常数CLK_TCK是指机器始终每秒走的时钟打点数,duration单位为秒
而函数可能跑的太快了,时间可能都不到一个tick,办法是
让被测函数重复运行充分多次,是的测出的总的时间充分长,最后计算平均运行时间
4、什么是数据结构
- 数据结构是数据对象在计算机中的组织方式(逻辑结构、物理存储结构)
- 数据对象必定与一系列加在其上的操作相关联,完成这些操作所用的方法就是算法
5、抽象数据类型
一个是 数据对象集 ,另一个是 数据集合相关联的操作集
在C语言中,它们是独立处理的。而对面向对象的语言来说,它们就为这个数据类型专门设计了这样的机制(类),把这个数据集跟和它相关的操作封装在一个类里面
那么,抽象的好处是什么呢?
当抽象时,就可以不用考虑具体的类型、存储方式或实现方式等,不用去具体考虑到程序中的一些细节问题
6、衡量算法好坏的指标
空间复杂度S(n)——根据算法写成的程序在执行时占用存储单元的长度。这个长度往往和输入数据的规模有关。空间复杂度过高的算法可能导致使用的内存超限,造成程序中断
时间复杂度T(n)——根据算法写成的程序在执行时耗费时间的长度。这个长度往往也与输入数据的规模有关。所以都写为关于n的函数。