博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
002.谈谈算法
阅读量:6175 次
发布时间:2019-06-21

本文共 1474 字,大约阅读时间需要 4 分钟。

  hot3.png

@author: 小甲鱼

@location:

1.数据结构和算法的关系

还是拿把妹来说:数据结构就是:你和妹子之间的关系算法就是:你把妹的技巧相辅相成的好基友关系:关系确定技巧,技巧又能促进关系。

2.算法的初体验

相关算法实现

int i, sum = 0, n = 100;for(i=1; i <= n; i++){    sum = sum + i}printf("%d", sum)

对比一下,用高斯先生的算法,我们可以这么写:

int i, sum = 0, n = 100;sum = (1+n)*n/2;printf("%d", sum);

不难发现:

2个算法都可以解决问题,如果数据量达到千万或者上亿,差距可想而知,甚至人脑都可以比电脑计算还快。

那么什么是算法呢?

  • -算法是解决特定问题求解步骤的描述,在计算机中国年表现为指令的有限序列,并且每条指令表示一个多个操作
  • -懵逼呢? 用小甲鱼的话来讲,算法就是你泡妹的技巧和方式

3.算法的特性

算法5项基本特征:(说的都是一些废话,但是考试必备)

  • 1.输入
  • 2.输出
  • 3.有穷性
  • 4.确定性
  • 5.可行性

1.输入

  • -算法具有0个多个输入。
  • -尽管对于绝大多数算法来说,输入参数都是必要的。但是有些时候,想打印“I love fishc.com”, 就不需要啥参数啦。
void print(){    print("I love fishc.com\n");}

2.输出

  • -算法具有1个多个输出。
  • -算法是一定要输出的,不需要它输出,那你要这个算法来干嘛? 输出的形式可以是打印形势输出,也可以是返回一个值或者多个值等。

3.有穷性

  • -指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。一个永远都不会结束的算法,我们还要他来干啥?

4.确定性

  • -算法的每一个步骤都具有确定的含义,不悔出现二义性。
  • -算法在一定条件下,只有一条执行路径,相同的输出只能有唯一的输出结果。
  • -算法的每个步骤都应该被精确定义而无歧义。

5.可行性

  • -算法的每一个都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。

4.算法设计的要求

解决同一个问题,算法并不是唯一的。对于很多应试教育的朋友来说,没有标准答案,其实很痛苦。例如:高斯同学的奇思妙想?尽管算法不是唯一,但我们要学习掌握一些好的算法,帮助我们解决问题!

1.正确性

  • -算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性,能正确反映问题的需求,能够得到问题的正确答案。
  • 大体分为以下4个层次:
    • 1.算法程序没有语法错误。
    • 2.算法程序对于合法输入能够产生满足要求的输出。
    • 3.算法程序对于非法输入能够产生满足规格的说明。
    • 4.算法程序对于故意刁难的测试输入都有满足要求的输出结果。

2.可读性

  • -算法设计另一目的就是为了便于阅读、理解和交流。
  • -我写代码的目的,一方面是为了让计算机执行,但还有一个重要的目的是为了便于他人阅读和自己日后阅读修改。

3.健壮性

  • -当输入数据不合法时,算法也能做出相关的处理,而不是产生异常奔溃莫名其妙的结果

4.时间效率高存储量低

  • -生活中,每个男人都希望找到一个贤惠的老婆,她们温柔又体贴,美丽又大方,还会做一手好菜。
  • 好算法就犹如好老婆,应该具备时间效率高存储量低的特点。所以在设计算法的时候我们应该尽量思考着2方面的问题!

转载于:https://my.oschina.net/repine/blog/680246

你可能感兴趣的文章
best introduction to camera calibration
查看>>
VC++排序 排序算法比较
查看>>
HBuilder生成代码行快捷键
查看>>
鼠标光标聚焦到可编辑div的最末尾
查看>>
Hangover(1.4.1)
查看>>
微服务系列(一):微服务架构的优势与不足
查看>>
windows和linux双系统删除linux
查看>>
变量的默认初始化和值初始化
查看>>
python分号使用
查看>>
qt事件机制(转)
查看>>
[bug]WCF 内存入口检查失败 Memory gates checking failed
查看>>
[Asp.net MVC]页面伪静态实现
查看>>
[Node.js]Domain模块
查看>>
Linux操作系统文档
查看>>
利用Tensorflow训练自定义数据
查看>>
c++官方文档-枚举-联合体-结构体-typedef-using
查看>>
[题解]UVA11029 Leading and Trailing
查看>>
利用vue-gird-layout 制作可定制桌面 (一)
查看>>
校园社交网站app
查看>>
如何指定某些文件关闭ARC
查看>>