初识数据结构

一、数据结构与算法概述

1、数据结构

定义:

数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合; 通俗点来讲的话:我们把现实世界中海量以及复杂的问题,以特定的数据类型和特定的存储结构保存到主存储器(内存)中;

特定的数据类型、特定的存储结构释义:

例1:当我需要存储一个班级学生的信息,假设有20个学生,那么直接可以使用连续的存储结构(数组)就可以了。

例2:如果需要保存1万个人,这个时候依然可以使用数组来存储,但是这样就比较困难了,当数据量很大的时候,数组的连续内存空间无法支撑那么大的数据量,这个时候就可以使用链表进行保存,它不需要一块连续的空间。例如图2-1,每一块内存都不是连续的,每一块内存除了需要保存自身属性外,还额外存储一个指针,这个指针指向下一块内存的地址,以此来串联起来。

2-1

例3:如果说现在需要存储学校、年级、班级的数据,那么链表就无法进行存储了,链表无法体现出来层级,这个时候就需要使用树形结构来存储。

如图3-1

3-1

例4:还有一种情况,存储交通图的情况,每一个站点都存在关系,这个时候用数组存储不了、链表、树也存储不了,这个时候就只能使用图来存储了。

2、算法:

定义:

实现某个功能而执行的相应的操作叫做算法;

衡量算法的标准:
  1. 时间复杂度;程序大概执行的次数(算法最核心的步骤运行的次数),而非执行的时间。因为执行的时间会因为环境的差异而发生变化。
  2. 空间复杂度;算法执行过程中大概需要占用最大内存;
  3. 可读性(难易程度);如果写的算法只有自己看的懂,它也不算做是好的算法。
  4. 健壮性;在算法输入一些非法值的时候不能产生崩溃。

还有一个是正确性,但是这个标准比较废话,算法最基本的就是计算正确了,如果计算不正确它也不叫算法了。

二、数据结构的结构划分

数据结构整体可划分为逻辑结构和物理结构
  1. 逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关;这个也是主要的研究方向。
  2. 物理结构:指数据的逻辑结构在计算机存储空间的存放形式;
逻辑结构包含的内容:
  1. 集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;

集合

  1. 线性结构:数据结构中的元素存在一对一的相互关系;
  2. 树形结构:数据结构中的元素存在一对多的相互关系;

树形结构

  1. 图形结构:数据结构中的元素存在多对多的相互关系。

图形结构

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++控制台程序接收、解析参数及被如何调用、调试

    无论控制台程序也好、还是界面应用程序也好,C++的入口函数就是main函数,所有的执行第一个入口函数。 在main函数的入参中会带有两个入参

    Sky_Mao
  • 修改mysql数据库文件存放目录

    在安装mysql的时候,数据库的存放路径是默认的,默认会存放在C盘,这样会占用大量的磁盘空间 此教程以win10,MySQL Server 5.7为例 1、...

    Sky_Mao
  • UOS修改盘符名称(像windows的C、D、E盘)

    在安装好UOS以后,就会发现,这个盘的名字怎么和Window不一样呢? 没有C、D、E等熟悉的名字 而且只有存储大小,在资源管理器中很难进行区分 那么我们...

    Sky_Mao
  • 老码农眼中的存储

    存储,是我们码农每天都要打交道的事情,而当我们面对RAID,SAN,对象存储,分布式数据库等技术的时候,又往往似是而非,存储成了我们熟悉的陌生人。

    半吊子全栈工匠
  • 两种主要列存储方式的区别

    Bigtable,HBase,Hypertable和Cassandra都被称为列存储,因为它们能够单独存储和访问列族。 这使它们看起来与列存储(如Sybase ...

    哒呵呵
  • 小视频app程序开发:抢答!短视频内容存储在哪里?

    不参与小视频app程序开发的小伙伴们可能会有这样的疑惑:当我们把短视频上传至小视频程序中,无论上传者以后在不在线,其他用户都能够及时查看到他发的小视频,这是为什...

    用户4372465
  • 5个秘诀,轻松应对企业级数据存储问题

    首先我们了解一下存储虚拟化的定义及其常见的三种技术。 存储虚拟化(StorageVirtualization)最通俗的理解就是对存储硬件资源进行抽象化表现。通过...

    BestSDK
  • Mysql字段类型设计相关问题!

    Mysql是以文件存储在我们的系统的硬盘上面,那么

    思梦php
  • 如何安全存储密码都不知道,回去等通知吧!

    说到密码大家肯定都不陌生,我们每个人都有一些列的密码:邮箱密码、社交网站密码、各种app密码等等,密码就如同每个人网络领域的一把钥匙。

    黄泽杰
  • 去Oracle实录:如何在线更换金融核心场景中的数据库?

    本文会分享陆金所在线换库的全过程,详细剖析陆金所设计的在线换数据库方案,整套方案又是如何在一个复杂庞大的金融系统里,通过多团队紧密配合稳妥落地。希望阅读本文之...

    深度学习与Python

扫码关注云+社区

领取腾讯云代金券