算法初体验

高斯算法"1+2+3+...+100"

普通的解决方法

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);

对比一下,可以看出,好的算法,可以省时又省力;

算法概念:解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作;

另解:算法就是你泡妞儿的技巧和方式(皮一下,很开心O(∩_∩)O~~)

可以看出:对于给定的问题,是可以有多种算法来解决的。

就像没有药可以包治百病一样,一个问题可以由多个算法解决,一个算法不可能具有通解所有问题的能力;


算法的特性

算法有五大基本特性:输入、输出、有穷性、确定性、可行性

输入:算法有零个或者多个输入。比如打印一句话的程序,只有输出,就没有输入;

输出:算法至少有一个或者多个输出,

算法必须要有输出,输出的形式没有限制,可以是打印的动作,也可以返回一个或多个值;

有穷性:算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成;

确定性:算法的每一步骤,都具有确定的含义,不会出现二义性,

算法在一定的条件下,只有一条执行路径,相同的输入只能有唯一的输出结果,

算法的每一个步骤都应该被精确定义,而无歧义;

可行性:算法的每一步,都必须是可行的。也就是说,每一步经过有限次的运算,都可以完成;


算法设计的要求

尽管算法不唯一,但我们也需要学习一些好的算法,对我们解决自己的问题,会有很大的帮助;

正确性:

大致可以分为一下四个层次

算法设计不能有语法错误;

对合法的输入能产生满足要求的输出;

非法的输入应有满足规格的说明,提示用户错误信息;

对故意刁难的测试应有满足要求的输出结果;

可读性:

应便于阅读,理解,交流;

写代码的目的就是为了便于他人和自己日后阅读修改;

健壮性:

当用户输入的数据不合法时,算法也能做相关处理,而不是产生异常、崩溃、或莫名其妙的结果;

时间效率高,存储量低:

一高一低,算法赢尽量往这方面靠拢;


finished  2018.11.2 10:47  by songpl

★转载请注明出处

【数据结构和算法】2谈谈算法相关推荐

  1. Interview:算法岗位面试—10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法、回归算法、聚类算法等细节考察

    ML岗位面试:10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法.回归算法.聚类算法等细节考察 Interview:算法岗位 ...

  2. 在Object-C中学习数据结构与算法之排序算法

    笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...

  3. 八十五、Python | Leetcode数据结构之图和动态规划算法系列

    @Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  4. 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)

    我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...

  5. 数据结构与算法之BFPRT算法

    数据结构与算法之BFPRT算法 目录 BFPRT算法介绍 BFPRT算法代码实现 1. BFPRT算法介绍 引用自博客:BFPRT算法O(n)解决第k小的数:https://www.jianshu.c ...

  6. 数据结构与算法之Manacher算法

    数据结构与算法之Manacher算法 目录 Manacher算法概述 Manacher算法代码实现 扩展题--如果只能向字符串后面添加字符,怎么让整体串变成回文串,要求填的字符最少 1. Manach ...

  7. 数据结构与算法之KMP算法

    数据结构与算法之KMP算法 目录 KMP算法介绍 输入字符串str1,str2,返回字符串str2是否在str1中,在的话在第几位开始 1. KMP算法介绍 在CSDN上看到一篇写的很好的关于KMP的 ...

  8. 沃舍尔算法_[数据结构拾遗]图的最短路径算法

    前言 本专题旨在快速了解常见的数据结构和算法. 在需要使用到相应算法时,能够帮助你回忆出常用的实现方案并且知晓其优缺点和适用环境.并不涉及十分具体的实现细节描述. 图的最短路径算法 最短路径问题是图论 ...

  9. 数据结构——最短路径算法之floyd算法

    数据结构--最短路径算法之floyd算法 (一) Flody算法 [前言]:前面的Dijkstra算法用来解决单源最短路径的问题,即:从指定点到图上其他各点的最短路径.那么,如果我们要求图中任意两个结 ...

最新文章

  1. Redis 21问,你接得住不?
  2. html5图片剪切板,JavaScript 网页端复制图片到剪切板
  3. python画二维图_使用python绘制二维图形示例
  4. IDEA安装Lombok插件失败的解决方案
  5. Fleet究竟是什么?为什么最近这么火~
  6. tb文件 vivado_Vivado FPGA设计基础操作流程:Vivado的基本使用
  7. imsi、 ICCID、ki、IMEI
  8. MediaCreationTool2004 U盘安装系统
  9. 2019软件测评师考试
  10. 获取网站url ico小图标
  11. 微信手机端调试抓包总结与问卷星手机端的自动化
  12. 完整的ACSII编码表
  13. 值得收藏:一份非常完整的MySQL规范
  14. local variable ‘count‘ referenced before assignment
  15. 《大型网站技术架构-核心原理与案例分析》(李智慧 著)第1章-大型网站架构演化
  16. TCP合法RST报文
  17. 平板电脑如何刷linux,平板电脑刷windows的方法是什么_如何把平板刷windows图文步骤...
  18. Java 生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
  19. python 全栈开发,Day43(python全栈11期月考题)
  20. splice、slice详解

热门文章

  1. docker compose搭建NACOS集群
  2. kali2020.1中文字体乱码/kali乱码/汉化
  3. Android iOS APPUI设计规范实例(详细的UI设计方法)
  4. 京东出王炸,地下物流要来了!以后快递直接从管道送到家
  5. SEO究竟是什么?SEO的相关基础概念介绍
  6. qt官网下载指导(新手易犯错误)
  7. Argoverse--Motion Forecasting Dataset评价指标minADE/minFDE详细介绍
  8. CSS3设置Div左右两边或者上下边框的样式
  9. 数据结构——图书管理系统
  10. 聚类分析:使用过程CLUSTER实现层次法(聚多少类的评判)