什么是算法?

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

算法的五个基本特征

输入

算法具有零个或多个输入。
尽管对于绝大多数算法来说,输入参数都是必要的

输出

算法至少有一个或多个输出。
算法是一定要输出的,输出的形式可以是打印形式输出,也可以是返回一个值或多个值等。

有穷性

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

确定性

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

可行性

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

算法设计的要求

正确性

算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。

大体分为以下四个层次:
算法程序没有语法错误。
算法程序对于合法输入能够产生满足要求的输出。
算法程序对于非法输入能够产生满足规格的说明。
算法程序对于故意刁难的测试输入都有满足要求的输出结果。

可读性

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

健壮性

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

时间效率高和存储量低

数据结构和算法 —— 谈谈算法相关推荐

  1. 谈谈算法(数据结构学习笔记)

    文章目录 什么是算法 算法举例 高斯简算1到100加法 算法的五个基本特征 算法设计的要求 什么是算法 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作 ...

  2. 数据结构与算法:算法简介

    数据结构与算法:算法简介 雪柯 大工生物信息 提笔为写给奋进之人 已关注 你说呢 . shenwei356 等 70 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国 ...

  3. javascript数据结构与算法---检索算法(二分查找法、计算重复次数)

    javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...

  4. 算法与数据结构_数据结构与算法专题--算法基本概念

    很多开发者都知道"程序=数据结构+算法"这个著名的公式,并不真正明白算法的定义或概念.究竟什么是算法呢?从字面意义上理解,算法即用于计算的方法,通过这种方法可以达到预期的计算结果. ...

  5. 【算法与数据结构专场】BitMap算法基本操作代码实现

    上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对 ...

  6. 数据结构-常用的查找算法

    总第124篇/张俊红 本篇讲讲数据结构里面常用的几个查找算法,数据结构理论篇系列差不多接近尾声了,接下来会分享一些比较特殊的概念,比如KMP.郝夫曼树等等,讲完概念以后会进入刷题阶段.刷题会用Pyth ...

  7. Python数据结构与算法(一)--算法和时间复杂度

    最近下班一直在学习和总结Python,最近在整理数据结构和算法这方面的知识,虽然大学的时候也学过数据结构(c语言版本),但是工作这几年一直在做前端所以,这方面的知识也忘了差不多,所以就想整理一下,方便 ...

  8. boost一些常用库(数据结构,迭代器,算法及字符串) 简单介绍

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/51923337 C++强大的重要原因之一就是它的库.而boost就是这样一个包罗万象的C++ ...

  9. aes算法c语言实现_C语言实现常用数据结构:Dijkstra最短路径算法(第18篇)

    「今天是学习C语言第 161 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」#题外话算法学习重点是学习如何编程使用它. # Dijkstra算法 Dijkstra算法,中文译名迪杰 ...

最新文章

  1. 长春市计算机学校老照片,松江这所学校一百年啦!一组老照片回忆曾经的旧时光…...
  2. Elasticsearch的功能、使用场景以及特点
  3. c 自动生成html文件,webpack4系列教程(三):自动生成项目中的HTML文件
  4. 英雄联盟手游锐雯有多么强大,新手教程全给你,瑞文很简单
  5. java如何解压rar文件怎么打开,java解压rar文件
  6. vue 学习笔记—路由篇
  7. 【AI面试题】Kmeams算法流程以及Kmeans++介绍
  8. 95-40-038-java.util.concurrent-ConcurrentLinkedQueue
  9. 剑指offer面试题68 - II. 二叉树的最近公共祖先(递归)
  10. 整型索引查询mysql是不是快点_图解Mysql索引的数据结构!看不懂你来找我
  11. verilog中generate用法及参数传递(转)
  12. csv文件-读取方式、字典
  13. 7.1 封装(Java包(package)的概念+访问权限修饰符(public/private/protected/default))
  14. Linux中的Tomcat500异常,Linux处理Tomcat异常的方法
  15. Eclipse的使用-Eclipse的简单使用,需要的来看看吧!
  16. 八人抢答器讲解_八人智力竞赛抢答器课程设计报告
  17. 好男07演唱会将开唱 劲歌热舞点燃盛夏激情
  18. defy+me525+android2.3.6官方镜像包,V大DEFY/DEFY+ ME525 ME525+ 2.3.6巅峰优化版0.86(红头)...
  19. 石榴——转自田维《花田半亩》
  20. redis rce漏洞安全_从重新定位到RCE:我从广告到网络安全的旅程

热门文章

  1. 无法加载主类的10中方法
  2. 061 hive中的三种join与数据倾斜
  3. HDU 4549 M斐波那契数列
  4. 程序员们,您还想熬夜吗?
  5. c++随机打乱数组_【洗牌算法】你确定这样的抽奖算法是随机的?
  6. android 随手记代码,用ExpandableListView写的随手记实例
  7. virtualbox安装时发生严重错误_Docker 安装(windows 10)
  8. vue-cli3 本地代理配置
  9. 获取界面url_PHP调用百度地图接口,根据IP地址获取地区
  10. Hadoop常用操作汇总