数据结构与算法:概述+思维导图

还记得这个经典公式吗?

程序=数据结构+算法    

可见数据结构和算法对于程序的重要性。基于此博主写了数据结构与算法系列随笔。下面先给出数据结构与算法的思维导图。

一.数据结构的基本概念

数据结构定义

数据结构是一种存储和组织数据的方式,以便于访问和修改。数据结构包括数据的逻辑结构、数据的存储结构以及数据的运算,即按照某种逻辑关系组织起来的一批数据,按一定的映射方式把它存放在计算机的存储器中,并在这些数据上定义了一个运算的集合。

  • 数据的逻辑结构:反映数据元素之间的关系。有集合、线性结构、树型结构、图型结构。
  • 数据的存储结构:逻辑结构在计算机中的存储映象,是逻辑结构在计算机中的实现,它包括数据元素的表示和元素之间关系的表示。有顺序存储结构(数组)、链式存储结构(链表)、索引存储结构、散列存储结构等。
  • 数据的运算:对数据施加的操作,通过算法描述。

二.算法的基本概念

算法定义

计算机求解一个问题所需的一系列步骤

算法的基本特性

  1. 输入:一个算法有0个或者多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身给出了初始条件;
  2. 输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
  3. 有穷性:算法必须能在执行有限个步骤之后终止;
  4. 确切性:算法的每一步骤必须有确切的定义;
  5. 可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成。

算法设计的要求:

  1. 正确性:设计的算法能满足具体问题的需求,并且任何合法的输入都会得出正确的输出;
  2. 可读性:是指算法被写好之后,该算法理解的难易程度,一个算法可读性的好坏十分重要。如果一个算法比较抽象且难以理解,那么这个算法就不利于交流和推广使用,对于修改、扩展、维护来说都十分不方便,因此,在追求高效的同时,也应是算法尽量简明易懂。
  3. 健壮性:当输入数据非法时,算法也会做出相应的判断,而不会因为输入的错误而造成瘫痪。
  4. 时间效率高(时间复杂度)和需要的存储空间少(空间复杂度)

时间复杂度:

程序大概的执行次数(不是执行时间)。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度

空间复杂度:

该算法所耗费的存储空间,它也是问题规模n的函数。其是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。

时间: 2024-10-09 07:02:35

数据结构与算法:概述+思维导图的相关文章

第一章软件开发概述思维导图

第一章软件开发概述思维导图

算法神探——思维导图

今年4月读的第二本书:算法神探.以侦探小说的形式,简要介绍了基于不同的数据结构,多种搜索算法的原理和实现.文笔诙谐幽默,算法的应用场景形象生动,回归基础,深入浅出,让人记忆深刻. 原文地址:https://www.cnblogs.com/brigth-9V/p/8929778.html

我以为我学懂了数据结构,看到这张导图,我才发现我错了

一个人对人民的服务不一定要站在大会上讲演或是做什么惊天动地的大事业,随时随地,点点滴滴地把自己知道的想到的告诉人家,无形中就是替国家播种垦植. -- 傅雷 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 点关注,不迷路?????? ?下面的数据结构知识点都掌握了,那说明你复习的很不错了.图片看不清可以加我微信,给你私发pdf文件.(偷偷告诉你,微信搜索 龙跃十二 关注公众号,点击联系作者即可获

机器学习算法思维导图总结篇

学习机器学习零零散散将近1年之久,期间也想做各种方式的总结.笔记,但因总总原因没能写出一个系列,加上当时理解尚浅.主次分不清,所以写笔记也就作罢.自己在草稿纸上推导,也是写完就扔.一路曲曲折折,踩了很多的坑,但总算有些许收获.面临毕业找工作,对机器学习也挺感兴趣,要找这方面的工作,所以,做此总结.一来记录自己的学习所得,二来为了找工作的面试复习一下.网上机器学习方面的文章很多,"浩如烟海",一点不为过,好多讲的都很详细,当然我在其中也学到了很多很多这方面的知识.但,总觉得缺点什么? 所

详细的数据结构思维导图

一点一点做的数据结构思维导图(共划分了四大块:逻辑结构,基本运算,物理结构,算法). 我自己认为是比较详细的.名称后面的括号中是常用的命名. 后面如果有时间,我还会写一些数据结构中的经典算法. 原文地址:https://www.cnblogs.com/ben-/p/12095846.html

机器学习之概述(整体思维导图)

利用三遍读书法学习机器学习这本书,下面展示的是第一遍读书后所绘的思维导图,工具是<幕布>: 第一遍读书主要是罗列,简单对比了每一种算法的特点及优缺点,在第二遍读书的时候再继续优化,敬请期待! 原文地址:https://www.cnblogs.com/hgt6688/p/8439750.html

各种图(流程图,思维导图,UML,拓扑图,ER图)简介

来源于:http://www.cnblogs.com/jiqing9006/p/3344221.html 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只是一种工具.光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法.有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作.因此,设计算法是程序设计的核心. 对同一个问题,可以有不同的解题方法和步骤.

【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介

原文地址:各种图(流程图,思维导图,UML,拓扑图,ER图)简介 流程图 1.定义:流程图是对过程.算法.流程的一种图像表示,在技术设计.交流及商业简报等领域有广泛的应用. 2.案例 3.计算机语言只是一种工具.光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法.有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作.因此,设计算法是程序设计的核心. 对同一个问题,可以有不同的解题方法和步骤.例如,求1+2+3+…+100,可以先进

精心整理「服务器Linux C/C++」 成长路程(附思维导图)

前言 我不是名校毕业,更没有大厂的背景,我只是一个毕业不到 2 年的普普通通的程序员,在摸爬滚打的工作这段时间里,深知了有一个「完整的知识体系」是非常重要的.当事人非常后悔没有在大学期间知道这个道理-- 众多大厂招人的需求也是非常注重此方面,毕竟我们不能单单只是一个只会写代码的程序员,更应该成为一个全面的工程师,能够迅速解决工作上的需求及众多问题. 特此,我根据众多大佬的书籍推荐和豆瓣的高分书籍总结了一份较为全面的「服务器Linux C/C++」 成长路程,我自己也是在跟着这份思维导图进一步的学