前言

小白决定补一补计算机基础知识,欢迎路过的大佬各抒己见!

正文

数据结构与算法

数据结构是算法的基础,算法在特定的数据结构上才能发挥作用;数据存储结构会影响算法效率;
     数据结构说明数据的组织方式,算法说明数据的操作方式。
     数据结构和算法相辅相成,密不可分。

数据结构

社会中的万物如果要在计算机中表示和处理,需要用一种东西描述,叫做数据,不仅仅数字,文本、图像、视频、声音等都可以叫做数据。
     描述数据又可以用数据元素、数据项、数据对象等。
     举个例子:

姓名 年龄 性别
王立坤 18
王亦博 17
撒备宁 19

表格中除表头外的每个单元格称为数据项,描述一个人的部分属性信息,是不可分割的最小单位。
     表格中除表头外每一行称为数据元素,描述一个人的全部信息,若干个数据项构成一个数据元素,也称为记录;
     整个表格称为数据对象,描述多个人的全部信息,相同特性的多个数据元素的集合,简称数据。

数据项> 数据元素> 数据对象 ,此处的>表示构成

数据结构,是指数据之间的组织方式,数据结构是数据之间是有特定关系而存在的一种体现。官方定义是:是相互之间存在一种或多种特定关系的数据元素的集合。

数据结构三要素

  • 逻辑结构
  • 存储结构
  • 运算

数据结构的作用是为了在计算中方便表示数据和处理数据运算,分为逻辑结构、存储结构和运算。逻辑结构是从现实世界的具体问题出发抽象出的数学模型,用来描述数据之间的关系;存储结构是描述数据在计算中(内存中)的存储和关系体现,运算则是对数据的操作,通过运算来处理问题解决问题。
     拿上面的例子来说,王立坤和王亦博是相邻的,王亦博和撒备宁是相邻的,这就是逻辑关系,如何在计算机中存储和表示王立坤、王亦博、撒备宁这三个数据元素及其相邻关系,这便是物理结构要做的事情。

抽象数据类型(ADT)

抽象数据类型(Abstract Data Type,ADT)是将数据对象、数据对象之间的关系、数据对象的操作封装在一起的一种结构,在Java编程语言中体现为一个类,不定义操作的具体实现,可以理解成逻辑结构的一种用计算机语言的表达,与编程所用的机器、所用的编程语言、所存储的结构均无关,。
     它作为一种数据封装,只定义了功能,与具体的实现分离。是后面每一种数据结构在计算中描述使用的基础。
     下面是抽象数据类型的标准格式:

ADT 抽象数据类型名称
Data 数据元素之间逻辑关系的定义
Operation 操作1 初始条件操作结果描述操作2……
endADT

算法

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

1. 算法的特性

● 输入和输出
          有0个或多个输入,1个或多个输出
          ● 有穷性
          在执行有限的步骤后可自动结束,每个步骤在可接受的时间内完成。
          ● 确定性
          执行的步骤都是有确定含义,不会出现二义性。
          ● 可行性
          每个步骤都可以通过有限次数运算实现。

2. 算法的设计要求

● 正确性
          算法应能正确反应问题的需求,通过输入、输出和无歧义的加工处理,没有语法错误,对于合法的和非法的输入,能够得到问题的正确答案和相应的说明结果。
          ● 可读性
          便于阅读、理解和交流。
          ● 健壮性
          对于输入非法数据时,算法也能做出相应处理,而不是产生异常或其他莫名其妙的结果。
          ● 低存储空间
          应尽量少的占用内存空间或外部硬盘存储空间。
          ● 高时间效率
          算法运行应尽量消耗短的时间,或者说尽量缩短运算的执行次数。

3. 算法效率的衡量标准

● 时间复杂度
          算法运行需要的时间称为时间复杂度,基本运算的执行次数做为时间复杂度的度量标准。时间复杂度一般是指最坏情况时间复杂度;时间复杂度函数中常数和其他次要项常常可以忽略,而更应该关注最高阶项的阶数。算法时间复杂度的计算方法参见博客:时间复杂度的计算方法
          常见的时间复杂度消耗的时间长度排序:O(1)<O(logN)<O(N)<O(NlogN)<O(N2)<O(N3)<O(2N)<O(N!)<O(NN)
          ● 空间复杂度
          算法占用的空间大小称为空间复杂度。算法运行时辅助变量所占用的空间,是衡量空间复杂度的关键因素。

小结

加油吧,小白!。

【数据结构与算法】小白入门相关推荐

  1. 【数据结构和算法】入门初识篇

    目录 一.前言 二.数据结构的理解 物理结构和逻辑结构 1.逻辑结构 2. 物理结构 一.前言 我们前面我学了Java的内部类,现在来学习一下数据结构和算法,多科齐下不仅可以 学科交插学习互相帮助,还 ...

  2. GitHub 上值得前端学习的数据结构与算法项目

    Hello,大家好,我是你们的 前端章鱼猫. 简介 前端章鱼猫从 2016 年加入 GitHub,到现在的 2020 年,快整整 5 个年头了. 相信很多人都没有逛 GitHub 的习惯,因此总会有开 ...

  3. 数据结构中为什么输入数据还没输入完全就结束了_我岂能忍!面试官居然用数据结构和算法“羞辱”我...

    如果大家是因为标题而进来,那我实话告诉你吧,真事!以后我会分享数据结构与算法相关的文章.为什么要学数据结构与算法,我总结了如下几点: 锻炼思维和问题处理能力 提高代码效率 大厂面试必备 情怀(大学没认 ...

  4. 开发杂谈:说说数据结构和算法的那点事儿

    程序设计的本质是对确定问题选择一个好的数据结构,加上设计一个好的算法,程序设计 = 数据结构 + 算法 本文出自门心叼龙的博客,属于原创类容,转载请注明出处.https://menxindiaolon ...

  5. 数据结构——小白入门篇

    数据结构--小白入门篇 浅谈学习心得 我为什么想要学数据结构? 在计算机界有这样一个万能公式:数据结构 + 算法 = 程序. 在如今这计算机引领风骚的时代,不学数据结构,你凭什么想要做时代的弄潮儿:所 ...

  6. 小白入门谱聚类算法原理与实现

    小白入门谱聚类算法原理与实现 小白入门谱聚类算法原理与实现 1. 谱聚类是什么? 2.谱聚类步骤 2.1 谱聚类构图 2.2 谱聚类切图 2.2.1RatioCut 2.2.2Ncut 3谱聚类实现 ...

  7. 如何求解问题--数据结构与算法入门

    如何求解问题–数据结构与算法入门 在学习数据结构与算法前,我们大多有这样的困惑,难道学习了数据结构与算法就能帮助我们解决学习Java.Python时的大作业吗?数据结构与算法是什么? 回答这个问题之前 ...

  8. 从大学入门到研究生拿大厂offer,必须看的数据结构与算法书籍推荐,不好不推荐!

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...

  9. 数据结构与算法入门---数据结构类型

    数据结构与算法入门---数据结构类型 数据的逻辑结构 数据的逻辑结构指数据元素之间的逻辑哦关系(和实现无关) 分类一:线性结构和非线性结构 线性结构:有且只有一个开始结点和一个终端节点,并且所有节点都 ...

最新文章

  1. 使用PlantText画时序图分析业务流程
  2. Silve“.NET研究”rlight 游戏开发小技巧:传说中的透视跑马灯
  3. 在SAP BSP view里显示outlook inbox里的邮件
  4. Android 自定义dialog
  5. lightgbm 数据不平衡_不平衡数据下的机器学习(下)
  6. sapmto生产模式配置及操作详解_硬岩制砂线怎么设计?300t/h的生产流程与设备配置详解...
  7. jQuery原理第一天
  8. 客户端软件 大华_大华“飞燕”,一款主打稳定WiFi的路由器!
  9. 速进,双十一内购通道!
  10. Necurs僵尸网络重操旧业发送垃圾邮件 影响股票市场
  11. 数字图像处理课程设计
  12. 巴伦变压器电路图_基于变压器的RF巴伦配置及参数介绍
  13. JAVA的0x1b分隔符_hive 特殊分隔符 0X1B
  14. 会计的思考(37):“弱水三千,只取一瓢饮”--业务人员的财务意识
  15. 宾州州立大学计算机排名,宾州州立大学帕克分校排名
  16. 优知学院创始人陈睿:怎样做好一个创业公司CTO?
  17. 关于阻止迅雷上传,带慢计算机的工具
  18. 微服务实施笔记(二)——搭建实验部署环境
  19. 那个“支付宝锦鲤”女孩,现在变得怎么样了?你肯定想象不到
  20. Unity官方实例教程 Roll-a-Ball(一)

热门文章

  1. Ubuntu 18.04安装教程
  2. swagger 集成 restful接口 使用Spring Security + jwt 进行token校验 根据用户 token 将对应的id注入到controller 指定参数中
  3. 国开计算机专业英语,国开电大计算机专业英语阅读(河北)形考一
  4. 安卓app添加底电耗模式和待机模式白名单
  5. 关于10DLC的相关问题
  6. 12月8日:thinkphp中的杂项
  7. 阿里云-edas-config-center cmd启动日志乱码
  8. K8S部署rook+ceph云原生存储
  9. linux 刷新 硬盘,linux – 从一个新硬盘重新刷新SW RAID1和一个坏块的旧硬盘
  10. 【网络】流量监控 - iftop|ifstat|查看某个ip流量|tcpdump|iptraf|Linux