算法的特性
1. 有穷性:由若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止
2. 确定性:每条语句有确定的含义,无歧义
3. 可行性:在当前环境条件下可以通过有限运算实现
4. 输入输出:有零个或多个输入,一个或多个输出
“好”算法的标注如下
1. 正确性:满足具体问题的需求,程序运行正常无语法错误,能通过软件测试,达到预期的需求
2. 易读性:标识符命名规则,简洁易懂,注释语句恰当适量,方便自己和他人阅读,便于后期调试和修改
3. 健壮性:对于非法数据及操作有较好的反应和处理
4. 高效性:指算法运行效率高,即算法运行所消耗的时间短。因此我们将算法基本运算的执行次数作为时间复杂度的衡量标准
5. 低存储性:低存储性是指算法所需要的存储空间低。因此算法占用的控件大小称为空间复杂度
时间复杂度
定义:算法运行需要的时间,一般将算法的执行次数作为时间复杂度的度量标准
//算法1_1
sum=0; //运行1次
total=0; //运行1次
for(i=1;i<=n;i++){ //运行n次
sum+=i; //运行n次
for(j=1;j<=m;j++){ //运行n*n次,嵌套循环
total+=i*j; //运行n*n次
}
}
T(n)=1+1+n+n+n*n+n*n
备注:运行次数中有高次方时,一般以最高次方来计算算法的运行时间
备注:在算法分析中