【数据结构】数据结构基础概念

系列文章目录

第一章:【数据结构】数据结构基础概念


文章目录

  • 系列文章目录
  • 前言
  • 简介
  • 名词解释
    • 数据
    • 数据元素
    • 数据项
    • 数据对象
    • 数据结构
    • 数据类型
    • 抽象
    • 抽象数据类型
    • 算法
    • 算法设计要求
  • 总结


前言

数据结构是软件编程的基础,是程序员的基本功。

简介

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
【程序设计 = 数据结构 + 算法】

名词解释

数据

是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

符号必须具备的两个前提:

  • 可以输入到计算机中
  • 能被计算机程序处理

数据元素

是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。

数据项

一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。

数据对象

是性质相同的数据元素的集合,是数据的子集。

数据结构

是相互之间存在一种或多种特定关系的数据元素的集合

类型说明
逻辑结构指数据对象中数据元素之间的相互关系
集合结构集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系
线性结构线性结构中的数据元素之间是一对一的关系
树形结构树形结构中的数据元素之间存在一对多的层次关系
图形结构图形结构的数据元素是多对多的关系
物理结构是指数据的逻辑结构在计算机中的存储形式
顺序存储结构是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的,需要一个指针存放数据元素的地址来反映其逻辑关系

数据类型

是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
类型用来说明变量或表达式的取值范围和所能进行的操作。

按照取值的不同,分为两类:

  • 原子类型:是不可以再分解的基本类型,包括整数。实型(就是小数),字符型等。
  • 结构类型:由若干个类型组合而成,是可以再分解的,例如整型数组是由若干整型数据组成的。

抽象

指取出事物具有的普遍性的本质,“抽象”的意义在于数据类型的数学抽象特性。

抽象数据类型

指一个数学模型及定义在模型上的一组操作,体现了程序设计中问题分解、抽象和信息隐藏的特性。
(我们对已有的数据类型进行抽象,就有了抽象数据类型)

算法

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

  • 输入、输出、有穷性、确定性、可行性
  • 输入:算法具有零个或多个输入(可以是没有输入的,比如你打印个hello world的代码)
  • 输出:算法至少有一个或多个输出
  • 有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成
  • 确定性:算法的每一步骤都具有明确的含义,不会出现二义性(在相同的条件下只有一条执行路径,相同的输入只有唯一的输出结果)
  • 可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成

算法设计要求

  • 正确性:

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

    分为4个层次:

    1. 算法程序没有语法错误
    2. 算法程序对于合法的输入数据能够产生满足要求的输出结果
    3. 算法程序对于非法的输入数据能够得出满足规格说明的结果(大多时候的要求标准)
    4. 算法程序对于精心选择的,甚至刁难的测试数据都能有满足要求的输出结果
  • 可读性

    算法设计的另一目的是为了便于阅读、理解和交流

  • 健壮性
    输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果

  • 时间效率高和存储量低

    时间效率高是指算法的执行时间短,存储量指算法在执行过程中需要的最大存储空间,主要指内存和硬盘空间

    • 算法效率的度量方法
      • 事后统计方法

        主要是通过设计好的测试仪程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,确定效率高低。

        由于有以下缺点,该方法基本不予考虑

        1. 必须要花大量时间来编写测试程序
        2. 受计算机硬件和软件等环境因素影响太大,杂音太多,结果准确性不高
        3. 测试数据设计苦难, 和测试数据规模也有很大关系
      • 事前分析估算方法

        在计算机程序编制前,依据统计方法对算法进行估算。

        程序运行时间决定因素有以下几点

        1. 算法采用的策略、方法
        2. 编译产生的代码质量
        3. 问题的输入规模
        4. 机器执行指令的速度

        抛开与计算机软硬件的因素,一个程序的运行时间依赖于算法的好坏和问题的输入规模(输入量大小)。

        最终,在分析程序的运行时间时,最重要的是把程序看成是独立于程序设计语言的算法或一系列步骤。

      • 渐进增长:

        给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的 n > N,f(n)总是比g(n)大,那么我们说f(n)的增长渐进快于g(n)。

        判断一个算法的好坏时,例如 3n+1,2n2,2n2+3n+1, n3+1:

        1. 可以忽略加法常数
        2. 与最高次项相乘的常数不重要
        3. 函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数
      • 算法时间复杂度

        在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。

        算法的时间复杂度,也就是算法的时间度量,记作:T(n) = O(f(n))。

        他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度,其中f(n)是问题规模n的某个函数。

        • 推导大O阶(O(fn))

          1. 用常数1取代运行时间中的所有加法常数
          2. 在修改后的运行次数函数中,只保留最高阶项
          3. 如果最高阶项存在且不是1,则去除与整个项相乘的常数

          得到的结果就是大O阶,分为常数阶O(1),线性阶O(n),对数阶O(logn),平方阶O(n2)等

        • 最坏情况与平均情况

          最坏情况运行时间是一种保证,那就是运行时间将不会再坏了。

          在应用中,这是一种最重要的需求。通常,除非特别指定,我们提到的运行时间都是最坏情况的运行时间。

          平均运行时间时所有情况中最有意义的,因为它是期望的运行时间,但现实情况中。很难获取平均时间。

        • 算法空间复杂度

          现实中完全可以通过空间来换取时间,例如一个本来需要每次计算n次的结果,先把所有的情况都保存下来,然后根据输入去查找对应结果,就从O(n)变为了O(1)。

          S(n) = O(f(n)),通常说的算法复杂度指时间复杂度

总结

本文简单介绍了学习数据结构的一些基础知识,下一章开始进入第一个具体的数据结构:线性表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/95588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu20配置Mysql常用操作

文章目录 版权声明ubuntu更换软件源Ubuntu设置静态ipUbuntu防火墙ubuntu安装ssh服务Ubuntu安装vmtoolsUbuntu安装mysql5.7Ubuntu安装mysql8.0Ubuntu卸载mysql 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程…

12、建立健全人员培训体系

9、大小屏分离与精细化审核 10、质量审核的设立与合并 11、视频分类建议 内容仓为公司其他部门输送了许多人才,既包括有潜力的主管,也有表现突出或者具备某些特殊能力的员工,从内容仓走出的同事,有些已经成为公司重要业务某个方…

回归预测 | MATLAB实现PSO-SVR粒子群优化支持向量机回归多输入单输出预测

回归预测 | MATLAB实现PSO-SVR粒子群优化支持向量机回归多输入单输出预测 目录 回归预测 | MATLAB实现PSO-SVR粒子群优化支持向量机回归多输入单输出预测预测效果基本介绍模型描述程序设计预测效果 <

lv7 嵌入式开发-网络编程开发 11 TCP管理与UDP协议

目录 1 TCP管理 1.1 三次握手 1.2 四次挥手 1.3 保活计时器 2 wireshark安装及实验 3.1 icmp协议抓包演示 3.2 tcp协议抓包演示 3 UDP协议 3.1 UDP 的主要特点&#xff1a; 4 练习 1 TCP管理 1.1 三次握手 TCP 建立连接的过程叫做握手。 采用三报文握手&#xff1…

Fiddler抓取手机https包的步骤

做接口测试时&#xff0c;有时我们需要使用fiddler进行抓包分析&#xff0c;那么如何抓取https包。主要分为以下七步&#xff1a; 1.设置fiddler选项&#xff1a;Tools->Options,按如下图勾选 2.下载并安装Fiddler证书生成器 下载地址&#xff1a;http://www.telerik.com/…

C/C++——内存管理

1.为什么存在动态内存分配 灵活性 静态内存分配是在编译时确定的&#xff0c;程序执行过程中无法改变所分配的内存大小&#xff1b;动态内存分配可以根本程序的运行环境来动态分配和释放空间&#xff0c;提供了更大的灵活性 动态数据结构 有些数据结构的大小和结构在编译时…

运动控制:分辨率、定位精度、重复定位精度

分辨率&#xff0c;定位精度&#xff0c;重复定位精度三者之间有什么关系&#xff1f; 对于这个问题&#xff0c;我相信&#xff0c;很多刚开始做设计的伙伴们&#xff0c;都有这样的疑问。 今天&#xff0c;不墨迹&#xff0c;直接讲问题。 先说分辨率&#xff0c;这个最容…

[计算机入门] Windows附件程序介绍(工具类)

3.14 Windows附件程序介绍(工具类) 3.14.1 计算器 Windows系统中的计算器是一个内置的应用程序&#xff0c;提供了基本的数学计算功能。它被设计为一个方便、易于使用的工具&#xff0c;可以满足用户日常生活和工作中的基本计算需求。 以下是计算器程序的主要功能&#xff1a…

【算法基础】基础算法(二)--(高精度、前缀和与差分)

一、高精度 当一个数很大&#xff0c;大到 int 无法存下时&#xff0c;我们可以考虑用数组来进行存储&#xff0c;即数组中一个位置存放一位数。 但是对于数组而言&#xff0c;一个数顺序存入数组后&#xff0c;对其相加减是很简单的。但是当需要进位时&#xff0c;还是很麻烦的…

华为云云耀云服务器L实例评测|部署个人音乐流媒体服务器 navidrome

华为云云耀云服务器L实例评测&#xff5c;部署个人音乐流媒体服务器 navidrome 一、云耀云服务器L实例介绍1.1 云服务器介绍1.2 产品规格1.3 产品优势1.4 支持镜像 二、云耀云服务器L实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 navidrome3.1 navidrome 介绍3.…

Spring Boot对账号密码进行加密储存

未来避免明文硬编码&#xff0c;我们需要对密码进行加密保存&#xff0c;例如账号密码 方法 在Spring Boot中&#xff0c;可以使用Jasypt&#xff08;Java Simplified Encryption&#xff09;库来对敏感信息进行加密和解密。Jasypt提供了一种简单的方式来在应用程序中使用加密…

Linux命令(95)之alias

linux命令之alias 1.alias介绍 linux命令alias是用来将/bin目录下的命令进行别名设置&#xff0c;将一些较长的命令进行简化。 alias命令的作用只局限于该次登入的操作&#xff0c;相当于临时变量。 如果对当前用户永久生效&#xff0c;需修改~/.bashrc文件&#xff0c;使用…

【动手学深度学习-Pytorch版】Transformer代码总结

本文是纯纯的撸代码讲解&#xff0c;没有任何Transformer的基础内容~ 是从0榨干Transformer代码系列&#xff0c;借用的是李沐老师上课时讲解的代码。 本文是根据每个模块的实现过程来进行讲解的。如果您想获取关于Transformer具体的实现细节&#xff08;不含代码&#xff09;可…

ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能

目录 一、自动补全 1.1、效果说明 1.2、安装拼音分词器 1.3、自定义分词器 1.3.1、为什么要自定义分词器 1.3.2、分词器的构成 1.3.3、自定义分词器 1.3.4、面临的问题和解决办法 问题 解决方案 1.4、completion suggester 查询 1.4.1、基本概念和语法 1.4.2、示例…

Ubuntu Server CLI专业提示

基础 网络 获取所有接口的IP地址 networkctl status 显示主机的所有IP地址 hostname -I 启用/禁用接口 ip link set <interface> up ip link set <interface> down 显示路线 ip route 将使用哪条路线到达主机 ip route get <IP> 安全 显示已登录的用户 w…

PLL锁相环倍频原理

晶振8MHz&#xff0c;但是处理器输入可以达到72MHz&#xff0c;是因为PLL锁相环提供了72MHz。 锁相环由PD&#xff08;鉴相器&#xff09;、LP&#xff08;滤波器&#xff09;、VCO&#xff08;压控振荡器&#xff09;组成。 处理器获得的72MHz并非晶振提供&#xff0c;而是锁…

好工具分享:阿里云价格计算器_一键计算精准报价

阿里云服务器价格计算器&#xff0c;鼠标选择云服务器ECS实例规格、地域、系统盘、带宽及购买时长即可一键计算出精准报价&#xff0c;阿里云服务器网分享阿里云服务器价格计算器链接地址&#xff1a; 阿里云服务器价格计算器 先打开阿里云服务器ECS页面 aliyunfuwuqi.com/go…

比较5组差值结构的顺序

( A, B )---3-30-2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A中有4个点&#xff0c;B全是0。统计迭代次数并排序。 其中有5组数据 差值结构 迭代次数 11 12 13 22 23 1 - - - 5579.44 11 23 1 1…

生成Release版本的.pdb文件

软件分为Debug版本、Release版本这2种版本&#xff0c;其中Debug版本是带有.pdb调试信息文件&#xff0c;而Release版本不带.pdb调试信息文件。软件发布时&#xff0c;一般采用Release版本&#xff0c;若因内存泄漏、数组访问越界、除零错误、磁盘读写错误等异常&#xff0c;造…

计算机毕设 大数据房价预测分析与可视

文章目录 0 前言1 课题背景2 导入相关的数据 3 观察各项主要特征与房屋售价的关系4 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟…