二、谈谈算法
来源:互联网 发布:mysql 重命名字段 编辑:程序博客网 时间:2024/06/07 00:29
1、算法定义
数据结构和算法有类似的关系。
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。【课本说法】
也就是解决程序的技巧和方式。
2、算法初体验:
例:计算1+2+……+100
传统循环计算:
int i,sum=0,n=100;for (i=1;i<=n;i++){Sum+=i;}cout<<sum<<endl;
-用高斯先生的算法,可以这么写:
int i,sum=0,n=100;sum=(1+n)*n/2;cout<<sum<<endl;
3、算法的特性
算法的五个基本特征:输入、输出、有穷性、确定性、可行性
(1)算法具有零个或多个输入。
(2)算法至少有一个或多个输出。输出形式可以是打印形式,也可以是返回值。
(3)有穷性:
算法执行有限的步骤之后,自动结束而不会无限循环。
并且每一个步骤在可接受的时间内完成。
(4)确定性:
算法的每一个步骤都具有确定的含义,不会出现二义性。
算法在一定条件下只有一条执行路径,相同的输入只能有唯一的输出结果。
算法的每个步骤都应该被精确定义而无歧义。
(5)可行性:
算法的每一步都必须可行,每一步都能够通过执行有限次数完成。【否则必须注明执行所要求的环境】
算法变幻无穷,并不唯一。同一问题可以有多种解决的算法。
4、算法设计的要求:
(1)正确性:算法至少应该具有输入、输出和加工处理无歧义性,能正确反映问题的需求、得到正确答案。
大体分为以下四个层次:
没有语法错误
对合法输入能产生满足要求的输出
对非法输入能产生满足规格的说明
对故意刁难的测试输入都有满足要求的输出结果
(2)可读性:算法得便于阅读、理解和交流。写代码的目的,一方面是为了让计算机执行,另一方面也得便于他人阅读和自己日后阅读修改。
(3)健壮性:输入数据不合法时,算法也能做相关处理,而不是产生异常、崩溃或其他莫名其妙的结果。
(4)时间效率高&存储量低
- 二、谈谈算法
- 谈谈AdaBoost算法
- 谈谈匈牙利算法
- 谈谈冒泡算法
- 谈谈KMP算法
- 2 谈谈算法
- 2.谈谈算法
- 数学之美系列二十四 -- 谈谈动态规划与如何设计动态规划算法
- 谈谈对账(二)
- 谈谈eclipse使用技巧二
- 谈谈五子棋的人工智能算法
- 谈谈数字图像的缩放算法
- 谈谈数字图像的缩放算法
- 谈谈数字图像的缩放算法
- 谈谈分类算法的选择
- 谈谈算法的基本思想
- 学习笔记2 谈谈算法
- 谈谈算法 – 数据结构和算法02
- hdu5833 Zhu and 772002
- Interllij 自定义模板
- savedInstanceState
- Ubuntu 下 网易云音乐使用体验
- 解决nagios报错:./stdio.h:456:1: error: 'gets' undeclared here (not in a function)的问题
- 二、谈谈算法
- JavaScript性能优化技巧之函数节流
- 写开源项目步骤(上传github、发布到jcenter、录屏gif)
- c与sv混合仿真的简单示例
- 单口RAM、双口RAM、FIFO
- adaboost xgboost gbdt 三个boosting方法整理
- OSG+VS2013+Win7 环境搭建
- iOS统计xcode代码行数
- 长期运行kibana