【数据结构和算法】2谈谈算法
算法初体验
高斯算法"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谈谈算法相关推荐
- Interview:算法岗位面试—10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法、回归算法、聚类算法等细节考察
ML岗位面试:10.29下午上海某电子(偏传统ML算法,外企)数据结构算法+晚上国内某保险公司(偏AI算法,世界500强)技术面试之分类算法.回归算法.聚类算法等细节考察 Interview:算法岗位 ...
- 在Object-C中学习数据结构与算法之排序算法
笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...
- 八十五、Python | Leetcode数据结构之图和动态规划算法系列
@Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
- 数据结构排序算法实验报告_[数据结构与算法系列]排序算法(二)
我的上一篇文章向大家介绍了排序算法中的冒泡排序.插入排序和选择排序.它们都是平均时间复杂度为 O(n^2) 的排序算法,同时还为大家讲解了什么是原地排序和什么是排序的稳定性.下图是这三种算法的比较,不 ...
- 数据结构与算法之BFPRT算法
数据结构与算法之BFPRT算法 目录 BFPRT算法介绍 BFPRT算法代码实现 1. BFPRT算法介绍 引用自博客:BFPRT算法O(n)解决第k小的数:https://www.jianshu.c ...
- 数据结构与算法之Manacher算法
数据结构与算法之Manacher算法 目录 Manacher算法概述 Manacher算法代码实现 扩展题--如果只能向字符串后面添加字符,怎么让整体串变成回文串,要求填的字符最少 1. Manach ...
- 数据结构与算法之KMP算法
数据结构与算法之KMP算法 目录 KMP算法介绍 输入字符串str1,str2,返回字符串str2是否在str1中,在的话在第几位开始 1. KMP算法介绍 在CSDN上看到一篇写的很好的关于KMP的 ...
- 沃舍尔算法_[数据结构拾遗]图的最短路径算法
前言 本专题旨在快速了解常见的数据结构和算法. 在需要使用到相应算法时,能够帮助你回忆出常用的实现方案并且知晓其优缺点和适用环境.并不涉及十分具体的实现细节描述. 图的最短路径算法 最短路径问题是图论 ...
- 数据结构——最短路径算法之floyd算法
数据结构--最短路径算法之floyd算法 (一) Flody算法 [前言]:前面的Dijkstra算法用来解决单源最短路径的问题,即:从指定点到图上其他各点的最短路径.那么,如果我们要求图中任意两个结 ...
最新文章
- Redis 21问,你接得住不?
- html5图片剪切板,JavaScript 网页端复制图片到剪切板
- python画二维图_使用python绘制二维图形示例
- IDEA安装Lombok插件失败的解决方案
- Fleet究竟是什么?为什么最近这么火~
- tb文件 vivado_Vivado FPGA设计基础操作流程:Vivado的基本使用
- imsi、 ICCID、ki、IMEI
- MediaCreationTool2004 U盘安装系统
- 2019软件测评师考试
- 获取网站url ico小图标
- 微信手机端调试抓包总结与问卷星手机端的自动化
- 完整的ACSII编码表
- 值得收藏:一份非常完整的MySQL规范
- local variable ‘count‘ referenced before assignment
- 《大型网站技术架构-核心原理与案例分析》(李智慧 著)第1章-大型网站架构演化
- TCP合法RST报文
- 平板电脑如何刷linux,平板电脑刷windows的方法是什么_如何把平板刷windows图文步骤...
- Java 生成13位条形码 Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
- python 全栈开发,Day43(python全栈11期月考题)
- splice、slice详解
热门文章
- docker compose搭建NACOS集群
- kali2020.1中文字体乱码/kali乱码/汉化
- Android iOS APPUI设计规范实例(详细的UI设计方法)
- 京东出王炸,地下物流要来了!以后快递直接从管道送到家
- SEO究竟是什么?SEO的相关基础概念介绍
- qt官网下载指导(新手易犯错误)
- Argoverse--Motion Forecasting Dataset评价指标minADE/minFDE详细介绍
- CSS3设置Div左右两边或者上下边框的样式
- 数据结构——图书管理系统
- 聚类分析:使用过程CLUSTER实现层次法(聚多少类的评判)