数据结构和算法 —— 谈谈算法
什么是算法?
算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法的五个基本特征
输入
算法具有零个或多个输入。
尽管对于绝大多数算法来说,输入参数都是必要的
输出
算法至少有一个或多个输出。
算法是一定要输出的,输出的形式可以是打印形式输出,也可以是返回一个值或多个值等。
有穷性
指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。
确定性
算法的每一个步骤都具有确定的含义,不会出现二义性。
算法在一定条件下,只有一条执行路径,相同的输入只能有唯一的输出结果。
算法的每个步骤都应该被精确定义而无歧义。
可行性
算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。
算法设计的要求
正确性
算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。
大体分为以下四个层次:
算法程序没有语法错误。
算法程序对于合法输入能够产生满足要求的输出。
算法程序对于非法输入能够产生满足规格的说明。
算法程序对于故意刁难的测试输入都有满足要求的输出结果。
可读性
算法设计另一目的是为了便于阅读、理解和交流。
写代码的目的,一方面是为了让计算机执行,但还有一个重要的目的是为了便于他人阅读和自己日后阅读修改。
健壮性
当输入数据不合法时,算法也能做出相关处理,而不是产生异常、崩溃或莫名其妙的结果。
时间效率高和存储量低
数据结构和算法 —— 谈谈算法相关推荐
- 谈谈算法(数据结构学习笔记)
文章目录 什么是算法 算法举例 高斯简算1到100加法 算法的五个基本特征 算法设计的要求 什么是算法 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作 ...
- 数据结构与算法:算法简介
数据结构与算法:算法简介 雪柯 大工生物信息 提笔为写给奋进之人 已关注 你说呢 . shenwei356 等 70 人赞同了该文章 引用自算法图解,作者[美] Aditya Bhargava 译袁国 ...
- javascript数据结构与算法---检索算法(二分查找法、计算重复次数)
javascript数据结构与算法---检索算法(二分查找法.计算重复次数) /*只需要查找元素是否存在数组,可以先将数组排序,再使用二分查找法*/ function qSort(arr){if (a ...
- 算法与数据结构_数据结构与算法专题--算法基本概念
很多开发者都知道"程序=数据结构+算法"这个著名的公式,并不真正明白算法的定义或概念.究竟什么是算法呢?从字面意义上理解,算法即用于计算的方法,通过这种方法可以达到预期的计算结果. ...
- 【算法与数据结构专场】BitMap算法基本操作代码实现
上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下[算法与数据结构专场]BitMap算法介绍 这篇我们来讲一下BitMap这个数据结构的代码实现. 回顾下数据的存储原理 一个二进制位对 ...
- 数据结构-常用的查找算法
总第124篇/张俊红 本篇讲讲数据结构里面常用的几个查找算法,数据结构理论篇系列差不多接近尾声了,接下来会分享一些比较特殊的概念,比如KMP.郝夫曼树等等,讲完概念以后会进入刷题阶段.刷题会用Pyth ...
- Python数据结构与算法(一)--算法和时间复杂度
最近下班一直在学习和总结Python,最近在整理数据结构和算法这方面的知识,虽然大学的时候也学过数据结构(c语言版本),但是工作这几年一直在做前端所以,这方面的知识也忘了差不多,所以就想整理一下,方便 ...
- boost一些常用库(数据结构,迭代器,算法及字符串) 简单介绍
原文地址:http://blog.csdn.net/jinzhuojun/article/details/51923337 C++强大的重要原因之一就是它的库.而boost就是这样一个包罗万象的C++ ...
- aes算法c语言实现_C语言实现常用数据结构:Dijkstra最短路径算法(第18篇)
「今天是学习C语言第 161 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」#题外话算法学习重点是学习如何编程使用它. # Dijkstra算法 Dijkstra算法,中文译名迪杰 ...
最新文章
- 长春市计算机学校老照片,松江这所学校一百年啦!一组老照片回忆曾经的旧时光…...
- Elasticsearch的功能、使用场景以及特点
- c 自动生成html文件,webpack4系列教程(三):自动生成项目中的HTML文件
- 英雄联盟手游锐雯有多么强大,新手教程全给你,瑞文很简单
- java如何解压rar文件怎么打开,java解压rar文件
- vue 学习笔记—路由篇
- 【AI面试题】Kmeams算法流程以及Kmeans++介绍
- 95-40-038-java.util.concurrent-ConcurrentLinkedQueue
- 剑指offer面试题68 - II. 二叉树的最近公共祖先(递归)
- 整型索引查询mysql是不是快点_图解Mysql索引的数据结构!看不懂你来找我
- verilog中generate用法及参数传递(转)
- csv文件-读取方式、字典
- 7.1 封装(Java包(package)的概念+访问权限修饰符(public/private/protected/default))
- Linux中的Tomcat500异常,Linux处理Tomcat异常的方法
- Eclipse的使用-Eclipse的简单使用,需要的来看看吧!
- 八人抢答器讲解_八人智力竞赛抢答器课程设计报告
- 好男07演唱会将开唱 劲歌热舞点燃盛夏激情
- defy+me525+android2.3.6官方镜像包,V大DEFY/DEFY+ ME525 ME525+ 2.3.6巅峰优化版0.86(红头)...
- 石榴——转自田维《花田半亩》
- redis rce漏洞安全_从重新定位到RCE:我从广告到网络安全的旅程