数据结构系列一:初识集合框架+复杂度

前言

数据结构——是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是计算机专业的基础课程,但也是一门不太容易学好的课,它当中有很多费脑子的东西,之后在学习时,你若碰到了困惑或不解的地方 都是很正常的反应,就像你想乘飞机去旅行,在飞机场晚点几个钟头,上了飞机后又颠簸恐慌了一把一样,别大惊小怪,都很平常,只要能安全到这就是成功。——封清扬《大话数据结构》


数据结构系列一

  • 前言
  • 一、如何学好数据结构+前置知识
  • 二、集合框架
    • (1)了解集合框架
    • (2)集合框架的重要性
    • (3)背后所涉及的数据结构以及算法
      • 1.什么是数据结构
      • 2.容器背后的数据结构
  • 三、时间和空间复杂度
    • (1)算法效率
    • (2)时间复杂度
      • 1.时间复杂度的概念
      • 2.大O阶方法的推导
    • (3)空间复杂度


一、如何学好数据结构+前置知识

从数据结构开始,代码量会变多,逻辑性会变强,还是需要有语法的基础的,数据结构是一门可以拉开差距的学科,这部分在面试、笔试、和工作中应用的非常多!
那么,我们如何学好数据结构呢?

  • 多画图
  • 多思考
  • 多调试
  • 多写代码

学习数据结构的前置知识:泛型、包装类
Java中集合类的背后就是数据结构。集合类有很多,所以把这些集合类有些书上叫:集合框架,集合框架里面会有很多的集合类,每一个集合类背后又是一个数据结构。
为什么会有这么多种数据结构?
一个集合类描述和组织数据的方式是不一样的,数据结构就是数据+结构,结构:描述或组织一些数据

  • 从学习的角度来看,我们先学背后的数据结构,然后学对应的集合类,最后学集合框架,这样一个顺序,掌握的效果会更好

二、集合框架

(1)了解集合框架

Java集合框架Java Collection Framework,又被称为容器container,是定义在java.util包下的一组接口和其实现的类
其主要表现为将多个元素element置于一个单元中,用于对这些元素进行快速、便捷的存储、检索、管理,即平时我们俗称的增删改查CRUD
例如:一副扑克牌(一组牌的组合)、一个邮箱(一组邮件的集合)、一个通讯录(一组姓名和电话的映射关系)等等
在这里插入图片描述
内部关系:接口extends接口、类implements接口

(2)集合框架的重要性

  • 成熟的使用集合框架,有助于我们便捷、快速的写出高效、稳定的代码
  • 学习背后的数据结构知识,有助于我们理解各个集合的优缺点及应用场景

(3)背后所涉及的数据结构以及算法

1.什么是数据结构

数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合

2.容器背后的数据结构

该阶段,我们主要学习一下容器,每个容器其实都是对某种特定数据结构的封装

  1. Collection:是一个接口,包含了大部分容器常用的一些方法

  2. List:是一个接口,规范了ArrayListLinkedList中要实现的方法

    • ArrayList:实现了List接口,底层为动态类型顺序表
    • LinkedList:实现了List接口,底层为双向链表
  3. Stack:底层是栈,栈是一种特殊的顺序表

  4. Queue:底层是队列,队列是一种特殊的顺序表

  5. Deque:是一个接口

  6. Set:集合,是一个接口,里面放置的是K模型

    • HashSet:底层为哈希桶
    • TreeSet:底层为红黑树
  7. Map:映射,里面存储的是K-V模型的键值对

    • HashMap:底层为哈希桶
    • TreeMap:底层为红黑树

三、时间和空间复杂度

(1)算法效率

算法效率分析分为两种:第一种是时间效率,第二种是空间效率,时间效率被称为时间复杂度,二空间效率被称为空间负责度,时间负责度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间

(2)时间复杂度

1.时间复杂度的概念

时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个数学函数,它定量描述了该算法的运行时间,一个算法执行所消耗的时间,从理论上来说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道,但是我们需要每个算法都上机测试吗?是都可以上机测试,但是这很麻烦,所以才有了时间复杂度这个分析方式,一个算法所花费的时间与其中语句的执行次数成正比,算法中的基本操作的执行次数,为算法的时间复杂度

2.大O阶方法的推导

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

通过上面我们会发现大O阶的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数
两个算法如果比较复杂度时,一般比较最坏情况下

(3)空间复杂度

空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数,空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法

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

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

相关文章

智慧物业平台(springboot小程序论文源码调试讲解)

第4章 系统设计 用户对着浏览器操作,肯定会出现某些不可预料的问题,但是不代表着系统对于用户在浏览器上的操作不进行处理,所以说,要提前考虑可能会出现的问题。 4.1 系统设计思想 系统设计,肯定要把设计的思想进行统…

2024年国赛高教杯数学建模A题板凳龙闹元宵解题全过程文档及程序

2024年国赛高教杯数学建模 A题 板凳龙闹元宵 原题再现 “板凳龙”,又称“盘龙”,是浙闽地区的传统地方民俗文化活动。人们将少则几十条,多则上百条的板凳首尾相连,形成蜿蜒曲折的板凳龙。盘龙时,龙头在前领头&#x…

在PyCharm中集成AI编程助手并嵌入本地部署的DeepSeek-R1模型:打造智能开发新体验

打造智能开发新体验:DeepSeekPycharmollamaCodeGPT 目录 打造智能开发新体验:DeepSeekPycharmollamaCodeGPT前言一、什么是ollama?二、如何使用1.进入ollama官方网站:2.点击下载ollama安装包3.根据默认选项进行安装4.安装成功5.打开命令提示符…

软件测试的基础入门(一)

文章目录 一、什么是软件测试?(1)生活中的测试案例(2)代码中的测试示例(3)软件测试的定义 二、软件测试的重要性三、测试工程师(1)定义(2)分类&am…

Linux版本控制器Git【Ubuntu系统】

文章目录 **前言**一、版本控制器二、Git 简史三、安装 Git四、 在 Gitee/Github 创建项目五、三板斧1、git add 命令2、git commit 命令3、git push 命令 六、其他1、git pull 命令2、git log 命令3、git reflog 命令4、git stash 命令 七、.ignore 文件1、为什么使用 .gitign…

20250221 NLP

1.向量和嵌入 https://zhuanlan.zhihu.com/p/634237861 encoder的输入就是向量,提前嵌入为向量 二.多模态文本嵌入向量过程 1.文本预处理 文本tokenizer之前需要预处理吗? 是的,文本tokenizer之前通常需要对文本进行预处理。预处理步骤可…

Spring Boot 3 整合 Spring Cloud Gateway 工程实践

引子 当前微服务架构已成为中大型系统的标配,但在享受拆分带来的敏捷性时,流量治理与安全管控的复杂度也呈指数级上升。因此,我们需要构建微服务网关来为系统“保驾护航”。本文将会通过一个项目(核心模块包含 鉴权服务、文件服务…

flutter项目构建常见问题

最近在研究一个验证码转发的app,原理是尝试读取手机中对应应用的验证码进行自动转发。本次尝试用flutter开发,因为之前没有flutter开发的经验,遇到了诸多环境方面的问题,汇总一些常见的问题如下。希望帮助到入门的flutter开发者&a…

Classic Control Theory | 12 Real Poles or Zeros (第12课笔记-中文版)

笔记链接:https://m.tb.cn/h.Tt876SW?tkQaITejKxnFLhttps://m.tb.cn/h.Tt876SW?tkQaITejKxnFL

图解感知机(Perceptron)

目录 1.感知机(Perceptron)介绍 2.网络结构与工作原理 3.模型工作示例 4.总结 1.感知机(Perceptron)介绍 感知机(Perceptron)是最早的人工神经网络模型之一,由弗兰克罗森布拉特(…

多旋翼+航模+直升机:多型号无人机飞行表演技术详解

多旋翼、航模、直升机等多种型号的无人机飞行表演技术,是现代科技与艺术的完美结合,它们通过精密的编程、高效的通信、先进的定位与导航技术,以及复杂的编队控制算法,共同呈现出令人震撼的视觉效果。以下是对这些无人机飞行表演技…

deepseek 导出导入模型(docker)

前言 实现导出导入deepseek 模型。deepseek 安装docker下参考 docker 导出模型 实际生产环境建议使用docker-compose.yml进行布局,然后持久化ollama模型数据到本地参考 echo "start ollama" docker start ollama#压缩容器内文件夹,然后拷贝…

【MySQL】表的增删查改(CRUD)(上)

个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 CRUD:Create(新增数据)、Retrieve(查询数据)、Update(修改数据)、Delete(修改数据…

Win11作为宿主机,运行VMware 总没有网络

问题: 移动了VMware到新宿主机上后,虚拟机无法连接网络,其实会显示一个圆圈的图标,这是连接上的图标。 造成这个错误的原因是多种多样的。 用下面的方法来查排查错误。 1.控制面板-> 网络连接 安装好虚拟机后,会…

edge浏览器将书签栏顶部显示

追求效果,感觉有点丑,但总归方便多了 操作路径:设置-外观-显示收藏夹栏-始终

快速入门——第三方组件element-ui

学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:10.第三方组件element-ui_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 第一节 组件间的传值 组件可以有内部Data提供数据,也可由父组件通过prop方式传…

代码审计入门学习之sql注入

路由规则 入口文件&#xff1a;index.php <?php // ---------------------------------------------------------------------- // | wuzhicms [ 五指互联网站内容管理系统 ] // | Copyright (c) 2014-2015 http://www.wuzhicms.com All rights reserved. // | Licensed …

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示&#xff1a; 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台&#xff0c;所以对信息的安全和稳定要求非常高。为了解决本问题&#xff0c;采用前端…

QQ登录测试用例报告

QQ登录测试用例思维导图 一、安全性测试用例 1. 加密传输与存储验证 测试场景&#xff1a;输入账号密码并提交登录请求。预期结果&#xff1a;账号密码通过加密传输&#xff08;如HTTPS&#xff09;与存储&#xff08;如哈希加盐&#xff09;&#xff0c;无明文暴露。 2. 二…

【AI算法岗面试八股面经【超全整理】——机器学习】

AI算法岗面试八股面经【超全整理】 概率论【AI算法岗面试八股面经【超全整理】——概率论】信息论【AI算法岗面试八股面经【超全整理】——信息论】机器学习【AI算法岗面试八股面经【超全整理】——机器学习】深度学习【AI算法岗面试八股面经【超全整理】——深度学习】NLP【A…