热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

数据结构和算法概念理解

数据结构的定义:1)数据是所有能被输入到计算机中,且能被计算机处理的符号的集合2)数据是计算机操作的对象的总称,也是计算机处理的信息的某种特定的符号表

数据结构的定义:

1)数据是所有能被输入到计算机中,且能被计算机处理的符号的集合
2)数据是计算机操作的对象的总称,也是计算机处理的信息的某种特定的符号表示形式

(1)数据元素又被称为数据节点或者数据记录
是数据中的一个个体,数据的基本单位
在这里插入图片描述
(2)数据结构
带结构的数据元素的集合 (这里强调元素的集合,ID Status Type)
相互之间存在着某种特定关系的数据元素的集合(比如上面3113,3112两两相临就存在联系,线性关系)
数据以及数据元素相互之间的联系

(3)数据的存储结构
数据元素及其关系在计算机存储器中的存储方式,也称为数据的物理结构

比如说我想在计算机中存储 { ID Status Type}
可以实现为常用的Json类型 {"id":3113,"status":"Fixed","Type":"Gerrit""id":3112,"status":"Opened","Type":"Bugzilla"}
定义好这种类型的数据结构就意味着要在计算机中分配存储空间用以保存数据,上图中显示给用户看的这个表格数据就是计算机已经
实现好的存储结构,是客观存在的数据结构所以也成为物理结构

(4)数据的运算
在上面存储结构的基础上可以进行一些增加修改和删除的操作

(5)数据结构的表示
该表中的记录顺序反映了数据元素之间的逻辑关系,为线性关系
用ID标识每条数据记录,数据间的逻辑关系表示为:<3111,3112>,<3112,3113>这样就确定了每条数据所在的位置

(6)逻辑结构类型
线性结构
在这里插入图片描述


  • 节点之间,一对一
  • 开始节点和终端节点都是唯一的
  • 除了开始节点和终端节点以外,其余节点都有且仅有一个前驱节点,有且仅有一个后继节点

树形结构,节点之间一对多
在这里插入图片描述


  • 开始节点唯一,终端节点不唯一。
  • 除终端节点以外,每个节点有一个或多个后续节点
  • 除开始节点外,每个节点有且仅有一个前驱节点

图形结构,多对多
在这里插入图片描述
没有开始节点和终端节点,所有节点都可能有多个前驱节点和多个后继节点

在这里插入图片描述


算法及其描述

(1)算法的定义:算法是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其
中每一条指令表示一个或多个操作。

(2)算法的重要的特性


  • 有穷性:在有穷步之后结束
  • 可行性:可通过基本运算有限次执行来实现
  • 有输入
  • 有输出

(3)算法和程序的关系?
一个计算机程序是对一个算法使用某种程序设计语言的具体实现。算法必须可终止,意味着不是所有的计算机程序都是算法。

(4)算法复杂度
传统情况下效率的概念


  • 单位时间完成的工作量
  • 指最有效地使用社会资源以满足人类的愿望和需要

(5)算法的效率
在这里插入图片描述

有效地使用计算资源满足需求


  • 时:用时短(CPU的计算资源)使用cpu在最短时间内完成运算
  • 空:耗费的内存少(存储资源)尽可能占用少的内存空间,可以多用计算机跑几次算法

何为“用时短”的算法?
比如你这个算法是在超级计算机中运行的还是在普通计算机中运行的,这样不能叫用时短
所以:


  • 不能用程序执行时间比较效率
  • 执行的环境不同
  • 实现的语言不同
  • 其他因素

用基本运算的次数度量算法的时间复杂度


  • 算法执行时间大致为基本运算所需的时间与其运算次数的乘积。
  • 基本运算的一般是最深层循环内的语句

(6)算法的时间复杂度
原理:在一个算法中,进行基本运算的次数越少,其运行时间也就相对地越少;基本运算次数越多,,其运行时间也就相对地越多。
定义:把算法中包含基本运算次数的多少称为算法的时间复杂度,也就是说,一个算法的时间复杂度是指该算法的基本运算次数。
度量:算法中基本运算次数T(n)是问题规模n的某个函数f(n),记作:T(n)=O(f(n))

“大O”


  • 表示时间复杂度的“量级”
  • 随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。

比如:T(n)=5n2-2n+10000=O(n2)


  • 只关注T(n)的最高阶,忽略其低阶项和常系数,这样既可简化T(n)的计算,又能比较客观地反映出当n很大时算法的时间性能。
  • 算法分析只关心n很大时的表现。

(7)复杂度的量级


  1. O(1),常数阶 复杂度与问题规模n无关 比如:没有循环的算法
  2. O(log2n),对数阶 同 O(lgn), O(lbn)
  3. O(n),线性阶 与问题规模n的增长呈线性增大关系, 比如:有执行n次的一重循环的算法
  4. O(nlog2n) 线性对数阶
  5. O(n2),平方阶 多项式阶算法为有效算法。
  6. O(n3),立方阶 多项式阶算法为有效算法。
  7. O(2n),指数阶

O(1)

在这里插入图片描述


推荐阅读
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 远程过程调用(RPC)是一种允许客户端通过网络请求服务器执行特定功能的技术。它简化了分布式系统的交互,使开发者可以像调用本地函数一样调用远程服务,并获得返回结果。本文将深入探讨RPC的工作原理、发展历程及其在现代技术中的应用。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 想搭建一个能够稳定支持每日500万页面浏览量(PV)的网站架构吗?了解500万PV的实际意义,以及如何计算服务器需要处理的并发请求量,是成功构建高效架构的关键。本文将从基础概念出发,深入探讨实现这一目标所需的技术细节和策略。 ... [详细]
  • 本文详细介绍了福昕软件公司开发的Foxit PDF SDK ActiveX控件(版本5.20),并提供了关于其在64位Windows 7系统和Visual Studio 2013环境下的使用方法。该控件文件名为FoxitPDFSDKActiveX520_Std_x64.ocx,适用于集成PDF功能到应用程序中。 ... [详细]
  • 智能手机的快速耗电问题困扰着许多人。通过一些简单的设置和调整,你可以显著提升手机的电池续航能力,甚至实现两天一充的目标。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 本文详细探讨了如何通过分析单个或多个线程在瓶颈情况下的表现,来了解处理器资源的消耗。无论是单进程还是多进程环境,监控关键指标如线程数量、占用时间及调度优先级等,有助于揭示潜在的性能问题。 ... [详细]
  • vivo Y5s配备了联发科Helio P65八核处理器,这款处理器采用12纳米工艺制造,具备两颗高性能Cortex-A75核心和六颗高效能Cortex-A55核心。此外,它还集成了先进的图像处理单元和语音唤醒功能,为用户提供卓越的性能体验。 ... [详细]
  • Java与JSON互转:实现JSON到Java对象及Java对象到JSON的转换
    本文详细介绍了如何在Java中实现JSON数据与Java对象之间的相互转换,包括代码示例和常见问题解决方法。 ... [详细]
  • 提供便捷的在线服务,用于JSON数据的查看、编辑和格式化,适合开发者和数据处理人员使用。 ... [详细]
  • 本文介绍如何在Laravel框架中集成微信支付功能,包括如何配置微信支付环境、处理支付请求及接收支付回调等关键步骤。 ... [详细]
author-avatar
沉沦850
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有