当前位置: 首页 > news >正文

初识集合和数据结构

目录

  • 初识集合框架
  • 数据结构基本概念和术语
    • 数据
    • 数据元素
    • 数据项
    • 数据对象
    • 前四者的关系
    • 数据结构
    • 逻辑结构和物理结构
      • 逻辑结构
      • 物理结构
  • 算法
    • 算法设计要求

初识集合框架

  1. Java的集合框架也可被称为容器,是定义在Java.util包下的一些接口和实现类。
  2. 其就是将多个元素存储到一个单元内,并对该单元内的元素进行增删改查(CRUD)
  3. 这些容器的背后都是对某种数据结构的封装,具体的后续慢慢介绍。
    在这里插入图片描述

数据结构基本概念和术语

数据

数据是描述客观事物的符号,是可以被计算机识可以操作的对象,能被计算机识别并可输入到计算机的符号集合

数据元素

数据元素是组成数据的,有一定意义的基本单位。在计算机中通常作为整体处理(也可称为记录)
比方说在畜类中,牛,马,羊等算是畜类的数据元素

数据项

一个数据元素可以由若干的数据项组成。数据项是不可分隔的最小单位。
比方说人这个数据元素可以包含嘴巴,鼻子,耳朵,电话,邮箱等数据项。

数据对象

数据对象是性质相同的数据元素的集合,是数据的子类。性质相同是指数据元素具有相同数量和类型的数据项。我们经常将数据对象简称为数据。

前四者的关系

在这里插入图片描述
查阅网上资料,我觉得举例子更好理解
在这里插入图片描述
以上是两张表,这两张表就是数据
每个表就是一个数据对象
每个表中的每一行就是数据元素
而每个表中的字段就表示数据项

数据结构

不同数据元素之间存在的关系,我们称为结构。数据结构指相互之间存在一种或多种特定关系的数据元素的集合。那么之间的关系究竟是什么呢?

逻辑结构和物理结构

逻辑结构

逻辑结构指的是数据对象中的数据元素的关系。逻辑结构分为下面这四种

  1. 集合结构
    集合中的数据元素除了同属于一个集合外没有什么别的关系,每个元素之间平等。
    在这里插入图片描述
  2. 线性结构
    线性结构的数据元素是一对一的关系。
    在这里插入图片描述
  3. 树形结构
    存在一对多的层次关系
    在这里插入图片描述
  4. 图形结构
    图形结构中数据元素的关系是多对多的
    在这里插入图片描述
    注意点:
  5. 画图时,每个数据元素要要看成一个结点,并用圆圈表示。
  6. 元素之间的逻辑关系用连线表示,如果有方向,则连线要带箭头。

物理结构

物理结构是指数据元素的逻辑结构在计算机中存储的方式。同时,物理结构也可以称为存储结构

  1. 顺序存储
    将数据元素存储到连续的存储单元中,数据间逻辑关系和物理关系一样。
    在这里插入图片描述

  2. 链式存储
    数据元素可以存放在不同的存储单元内,存储单元可以是连续的也可以是不连续的。
    在这里插入图片描述

算法

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法有五个基本特性(输入,输出我合起来描述的,所以我下面就写了四个)

  1. 输入输出
    算法具有0个或者多个输入,至少有1个或多个输出。
  2. 有穷性
    算法在执行有限的步骤后会自动结束,而不会一直循环。当然,每个步骤还要在有限的时间内完成。
  3. 确定性
    算法的每个步骤都要有确定含义,不可出现二义。
  4. 可行性
    算法的每一步都是可行的。

算法设计要求

1.正确性
2.可读性
3.健壮性:输入数据不合法时,算法会进行相应处理,而不是产生异常或者产生出莫名其妙的结果。
4.时间效率高存储容量低

程序设计=数据结构 + 算法

http://www.lryc.cn/news/413967.html

相关文章:

  • cocos creator 3.x中动态加载 resources 文件夹下的图片时提示找不到
  • 第九十八周周报
  • 程序员找工作之数据结构面试题总结分析
  • 设置provider解决maven找不到JUnit 5测试样例
  • php反序列化靶机serial实战
  • 类型推断技术及仓颉语言实践
  • 职场生存秘籍:16条黄金法则
  • Flask 介绍
  • JAVA基础知识点3 (String 和 StringBuffer 以及 StringBuilder 的特点以及区别)
  • 2024年8月AI内容生成技术的现状与未来:从文生文到跨模态交互的全景分析
  • File 34
  • AI全知道-Embedding model中的Vector知识点
  • Qt 学习第四天:信号和槽机制(核心特征)
  • 跳跃游戏Ⅱ C++简单代码
  • Gitlab中access token 和Deploy token的区别
  • 【多线程】线程的五种创建方法
  • 关闭窗口工具类 - C#小函数类推荐
  • Xilinx FPGA 原语解析(一):IBUFDS_GTE3 差分时钟输入缓冲器
  • 力扣SQL50 患某种疾病的患者 正则表达式
  • k8s集群的资源发布方式(滚动/蓝绿/灰度发布)及声明式管理方法
  • SwiftUI 中掌握 ScrollView 的使用:滚动可见性
  • 中药养发护发
  • Java面试题-集合类
  • 【Vue3】组件通信之v-model
  • 【Golang 面试 - 进阶题】每日 3 题(二)
  • Java中等题-多数元素2(力扣)【摩尔投票升级版】
  • 100条超牛的DOS命令
  • 大数据信用报告查询会不会留下查询记录?怎么选择查询平台?
  • JS【详解】内存泄漏(含泄漏场景、避免方案、检测方法),垃圾回收 GC (含引用计数、标记清除、标记整理、分代式垃圾回收)
  • 第三期书生大模型实战营之Llamaindex RAG实践