数据结构与算法的基本概念1

文章目录

  • 前言
  • 一、数据与数据结构
    • 1.数据
    • 2.数据结构
  • 二、算法是什么?
  • 三、线性表
    • 1.定义
    • 2.特点
  • 总结


前言

  T_T此专栏用于记录数据结构及算法的(痛苦)学习历程,便于日后复习(这种事情不要啊)


一、数据与数据结构

1.数据

  数据的定义:太抽象了,几乎所有信息都可以叫数据。(我哭死)
  数据元素是数据的基本单位,在程序中常作为一个整体进行考虑和处理,也称为元素或记录、节点和顶点。构成数据元素的最小单位是数据项。例如学生包含姓名学号等等,全部学生构成一个数据,单个学生是一个数据元素,单个学生的姓名则是数据元素的数据项。
  数据对象:指具有相同性质的数据元素的集合,是数据的一个子集。例如所有男生是所有学生的一个子集。

2.数据结构

  数据结构:指相互之间存在一种或多种特定关系的数据元素的集合,包括数据的逻辑结构、数据的物理结构和对数据的操作。
  逻辑结构:即指数据的逻辑关系,例如a=b。逻辑结构可分为线性结构和非线性结构。
    线性结构:有且仅有一个节点只有后继节点(开始节点),有且仅有一个节点只有前驱节点(终端节点),并且所有其余节点仅有一个前驱和一个后继节点。想象一些人在玩老鹰抓小鸡,小鸡一方第一个即为开始节点,最后一个即为终端节点。(老鹰老鹰别吃我T~T)常见线性结构有:线性表、栈、队列和串。(这些是什么?我现在也不知道?_?)
    非线性结构:一个节点可能有多个前驱或后继节点。例如一人脚踏两只船??常见的非线性结构有:树、图。
  逻辑结构亦可分为四大逻辑结构:
    集合结构:数据元素之间除了同属一个集合外,互相无其他关系。
    线性结构:数据元素之间是一对一的,如大头儿子对小头爸爸。
    树形结构:数据元素之间是一对多的关系,如一个父亲两个孩子。
    图形/网形结构:数据元素之间是多对多的关系。
  由此可知,集合、树形、网形结构均为非线性结构。
  物理结构:即数据的存储方式。物理结构分为顺序存储结构和链式存储结构。
    顺序存储结构:即给分配一段连续的空间存储数据,例如数组。
    链式存储结构:数据在空间中的存储位置并非连续,而是呈现满天飞的形式。数据间通过一条无形的链连接起来,即指针。从而,使用链式存储结构的数据域,同时应具有对应的指针域,数据域存放数据,指针域指示其后继的信息。

二、算法是什么?

  算法指用于解决某个问题所采取的方法。(通俗的来说)例如计算从1加到100,你可以选择逐一个数字加起来,或者选择(1+100)*100/2。显然,后者效率更高。用专业术语来说,后者算法时间复杂度为O(1),而前者为O(n)。(什么是时间复杂度?嗯。。。看看其他博主的吧)
  算法的五个基本特征:输入、输出、有穷性、确定性和可行性。

三、线性表

1.定义

  线性表:由0个或多个数据元素组成的有限序列。

2.特点

  1.线性表是一个序列,也就是说数据元素存在先来后到的关系。好比一个数列,a0总是第一个出现。
  2.满足线性结构要求。
  3.线性表中数据元素个数定义为线性表的长度。如果表中无元素,则为空表。
  我们常用的一维数组就是一个线性表。


总结

  路漫漫其修远兮,吾将上下而开摆。
  有任何疑问和补充,欢迎交流。(但我显然不会)

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

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

相关文章

Domain Admin:方便快捷的图形化域名和SSL证书监测平台

Domain Admin:一目了然,一键掌握,您的全方位图形化域名与SSL证书智能管家!- 精选真开源,释放新价值。 概览 Domain Admin是一个基于Python Vue3.js 技术栈实现的域名和SSL证书监测平台,旨在为用户打造一个…

7-17 爬动的蠕虫

题目链接&#xff1a;7-17 爬动的蠕虫 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <stdio.h>int main(void) {unsigned int n, u, d;unsigned int minute, high;if (scanf("%d %d %d", &n, &u, &d) ! 3) {retur…

有关栈的算法

例题一 解法&#xff08;栈&#xff09;&#xff1a; 算法思路&#xff1a; 本题极像我们玩过的「开⼼消消乐」游戏&#xff0c;仔细观察消除过程&#xff0c;可以发现本题与我们之前做过的「括号匹配」问题是类似的。当前元素是否被消除&#xff0c;需要知道上⼀个元素的信息…

C/C++如何快速学习?少走3年弯路

于我而言&#xff0c;最开始学习就是 C&#xff0c;除了计算机专业&#xff0c;其他专业可能学习的第一门编程语言为 C 语言&#xff0c;还是谭浩强爷爷那本&#xff0c;当时想着有点 C 基础&#xff0c;无外乎就是 C 语言的升级版&#xff0c;于是开启了 C 的路程。 语言这个…

《深入Linux内核架构》第4章 进程虚拟内存(1)

目录 4.1 简介 4.2 进程虚拟地址空间 4.2.1 进程地址空间分布 4.2.2 建立布局 第3章讲了两点&#xff1a;物理内存的管理&#xff0c;内核虚拟地址管理。 本章讲&#xff1a;用户进程的虚拟地址空间管理。 4.1 简介 一个进程的整个虚拟地址空间&#xff08;0-3G&#xf…

JKTECH柔性振动盘柔性上料机

柔性供料器&#xff1a;用途广泛与好处显著 在现代工业生产中&#xff0c;随着技术的不断进步和市场的多样化需求&#xff0c;对物料供应系统的要求也日益提高。柔性供料器&#xff0c;作为一种新型的物料供应装置&#xff0c;其用途广泛且好处显著&#xff0c;正逐渐受到各行…

苍穹外卖亮点再梳理 ||

一、项目整体亮点&#xff1a; 【注&#xff1a;基于每个亮点&#xff0c;均有整理的相关知识&#xff0c;可在博客中查看】 1.数据库的设计采用RBAC&#xff08;基于角色访问控制&#xff09;的权限设计。 RBAC将权限授予角色&#xff0c;然后将用户分配给角色&#xff0c;…

算法——倍增

. - 力扣&#xff08;LeetCode&#xff09; 给你一棵树&#xff0c;树上有 n 个节点&#xff0c;按从 0 到 n-1 编号。树以父节点数组的形式给出&#xff0c;其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径…

JavaScript中创建对象的方式

在JavaScript中&#xff0c;有多种方式可以创建对象&#xff1a; 对象字面量&#xff1a; 这是创建对象最简单的方式&#xff0c;直接使用大括号 {} 包含键值对。var obj { key1: "value1", key2: "value2" };new 关键字&#xff1a; 使用 new 关键字和构…

指针 基础知识

本笔记为观看56 指针-指针的定义和使用_哔哩哔哩_bilibili后的学习笔记 指针的定义和使用 1、定义指针 int main () {//1、定义指针int a 10;//指针定义的语法&#xff1a; 数据类型 * 指针变量名&#xff1b;int * p;//让指针记录变量a的地址p &a; //& 为取址符cou…

电商技术揭秘十六:电商中的实时分析与决策支持系统

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

数据结构_链表基本操作代码

链表是线性表的一种&#xff0c;是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 和顺序表差不多&#xff0c;用结构体定义一个节点&#xff0c;包括存储的数据和下一个节点的地址。 这里我们写几个接口&…

如何部署上线项目

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录 多环境多环境分类前端多环境实战请求地址启动方式项目配置 后端多环境实战 项目部署原始部署前端…

【项目】棋海争锋

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 项目介绍 WebSocket介绍 使用 项目创建 数据库设计 用户模块 登录接口 注册接口 获取用户信息接口 匹配模块 …

cartographer代码学习-概率栅格地图(ActiveSubmaps2D与Submaps2D)

概率栅格地图是二维激光SLAM的特点&#xff0c;能够将环境通过地图的形式表达出来。 ActiveSubmaps2D作为概率栅格地图中的重要成分&#xff0c;这个对象主要在LocalTrajectoryBuilder2D这里被使用 第一次调用&#xff1a; active_submaps_(options.submaps_options())传入一…

P1598 垂直柱状图

链接 ​​​​​​题目链接&#xff1a;P1598 垂直柱状图 题目 题目描述 写一个程序从输入文件中去读取四行大写字母&#xff08;全都是大写的&#xff0c;每行不超过 $100$ 个字符&#xff09;&#xff0c;然后用柱状图输出每个字符在输入文件中出现的次数。严格地按照输出…

为什么要学习SpringBoot呢?

学习SpringBoot的原因众多&#xff0c;以下是其中的一些主要理由&#xff1a; 简化Spring应用开发&#xff1a;SpringBoot极大地简化了Spring应用的开发过程。它提供了许多默认的配置&#xff0c;使开发者能够更快速地构建和运行Spring应用&#xff0c;而无需花费大量时间在繁…

【Bing】开启代理后使用 Bing 搜索引擎总是: 没有与此相关的结果

【Bing】开启代理后使用 Bing 搜索引擎总是: 没有与此相关的结果 1 问题描述2 解决方法2.1 修改代理规则2.1.1 Clash Verge2.1.2 Clash Verge Rev2.1.3 V2RayN 1 问题描述 当我开了代理访问 Bing 时&#xff0c;经常会出现下面的页面: 2 解决方法 我所知的有三种方法: 手动关…

关于JVM-三色标记算法剖析

相关系列 深入理解JVM垃圾收集器-CSDN博客 深入理解JVM垃圾收集算法-CSDN博客 深入理解jvm执行引擎-CSDN博客 jvm优化原则-CSDN博客 jvm流程图-CSDN博客 三色标记产生的原因&#xff1f; 在并发标记的过程中&#xff0c;因为标记期间应用线程还在继续跑&#xff0c;对象间的引…

使用Matplotlib绘制打断图Broken Axis

使用Matplotlib绘制打断坐标轴Broken Axis 对于一批存在离群点的或者两极分化的数据&#xff0c;为了突出其值域差异&#xff0c;时常需要用到打断坐标轴效果。 使用Matplotlib绘制的效果如下&#xff1a; 对于同样的数据&#xff0c;使用brokenaxes库的绘制效果如下&#x…