首页 > 其他分享 >数据结构基础第1讲

数据结构基础第1讲

时间:2024-04-17 22:33:59浏览次数:12  
标签:begin right end matrix qquad 基础 数据结构 left

数据结构基础课第1讲

  • 4/17

考点一:基本概念

\[数据:能输入到计算机的符号集合 \left \{ \begin{matrix} 数值数据:整数,实数 \\ 非数值数据:图像,声音 \end{matrix} \right . \]

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

数据元素:数据的基本单位
数据项:构成数据元素的最小的单位

img

数据结构:数据元素之间存在特定的关系

img

数据的逻辑结构:数据元素之间逻辑关系的整体
(在讲数据结构的时候等价于逻辑结构)

img

考点二:逻辑结构

逻辑关系:元素与元素之间自然人为定义的“关系”,相应的结构称为逻辑结构/概念结构

数据结构从逻辑上分为四类:
img

\[逻辑结构:有时直接称为数据结构 \left \{ \begin{matrix} 线性结构:线性表,栈,队列,串\\ 非线性结构:树,图,多维数组,广义表 \end{matrix} \right . \]

说明:

img

img

数据类型:值和操作的集合

抽象数据类型(ADT):指的是从求解问题的数学模型中抽象出来的数据结构和运算(抽象运算)《画饼》

img

实现依赖具体数据结构
img

考点三:物理结构

物理结构/存储结构完成的问题——如何把数据放到计算机中进行处理

1.顺序结构

位置关系表示逻辑关系

逻辑上相邻,物理上也相邻

img

特点:

img

2.链接存储结构

通过指针表示逻辑关系
img

特点:
存储密度小
img

3.索引结构

数据元素之间无关系,索引之间存在关系,先有数据再有索引。

img

特点:

img

4.散列结构

在存储位置与关键代码之间建立确定关系的查找技术。

img

逻辑结构与存储结构的关系

img

数据结构
img

考点四:算法的概念和评价

重要特性:

img

考点五:时间复杂度(\(\bigstar \bigstar \bigstar \bigstar \bigstar\))

\[统计方法\left \{ \begin{matrix} 事后统计:计算机内部执行时间和实际占用空间统计。 \\ 事前分析:求出该算法的一个时间界限函数。\end{matrix} \right . \]

分析因素:

img

问题规模 \(n\) 的函数 \(T(n)\) :算法所有原操作的执行次数

算法执行时间 = 原操作所需时间\(\times T(n)\)

一个例子:
img

img

\[注意\left \{ \begin{matrix} 1.n \rightarrow \infty \\2. 忽略系数 \\ 3. 忽略低阶 \end{matrix} \right . \]

img

常量阶:与问题规模\(n\)无关

img

线行阶:

img

平方阶:

img

总结:

\[单重循环: i=1 \stackrel{i=i+1}{\rightarrow} n \qquad O(n) \]

\[双重循环:\left \{ \begin{matrix}&1.内外无关 O(m \times n) \qquad m:外层次数; n:内层次数 \\ &2.内外无关:做累加和 \end{matrix} \right . \]

三次方阶例子:
img

时间复杂度 \(\log_a n\) 指数\(a\)可以忽略掉

递归

从初始条件出发,沿着转移条件抵达终止条件。

例子:
O(n)
img

\[\divideontimes 递归\left \{ \begin{matrix} \left . \begin{matrix} 1.\qquad n \stackrel{n=n-1}{\rightarrow} 1 \\2. \qquad n \stackrel{n=n+1}{\rightarrow} n \end{matrix} \right . \qquad \qquad &情况1,2:O(n)\\ \left . \begin{matrix} 3.\qquad n \stackrel{n=n/k}{\rightarrow} 1 \\ 4.\qquad 1 \stackrel{n=n \times k}{\rightarrow} n \end{matrix} \right . \qquad &情况3,4:O(\log_k n)\end{matrix} \right . \]

  1. 情况5:O(2^n)
    img

  2. 情况6:\(O(n^\frac{1}{2})\)
    img

  3. 情况7:\(O(n \times \log_2 n)\)
    img

  4. 情况8:\(O(n)\)

    for(int i = 1; i < n; i * 2) # log_2 n项
        for(int j = 0; j < i; j++)
            printf("hello");     # O(n)
    

\[\log_2 n \left \{ \begin{align} i&=1 \qquad j=0 \qquad \qquad &1次\\ i&=2 \qquad j=0,1 \qquad &2次 \\ i&=n \qquad j=0,1,2 \cdots n-1 \qquad &n次 \end{align} \right . \]

\[1+2+4+ \cdots + n \Rightarrow S_n = \frac{1(1-2^{\log_2 n})}{1-2} = \frac{1\times (1-2^k)}{1-2}=n-1 \qquad k = \log_2 n \]

考点六:空间复杂度分析

只关心零时变量
例子:
img
img

标签:begin,right,end,matrix,qquad,基础,数据结构,left
From: https://www.cnblogs.com/JUANFENHUI/p/18141936

相关文章

  • openai包基础用法
    Note包含同步&异步完成&流式闲言少叙,看剑Requirementspipinstallopenai-UCodeimportopenaiimportasynciodefpp(obj:str):print(obj.center(50,"*"))#syncdef_sync():##w/ostreampp("Syncw/ostream")response......
  • 数据结构与算法
    1数据结构1.1动态数组①数组特点存储特点:连续存储优点:查找块,访问元素快缺点:插入、删除元素效率低②实现思路1.初始化:malloc()动态分配内存区域2.扩展长度:realloc()重新调整内存区域大小3.插入元素:插入位置,后面所有元素后移4.删除元素:删除位置,后面所有元......
  • 前端【小程序】04-小程序基础篇【分包加载】
    一、分包加载官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages.html​分包加载是优化小程序加载速度的一种手段。1.1为什么?​微信平台对小程序单个包的代码体积限制为2M,超过2M的情况下可以采用分包来解决即使小程序代码体积没......
  • 前端【小程序】04-小程序基础篇【生命周期】
    生命周期生命周期是一些名称固定自动执行的函数。 页面生命周期​onLoad 在页面加载完成时执行,只会执行1次,常用于获取地址参数和网络请求onShow 在页面处于可见状态时执行,常用于动态更新数据或状态onReady 在页面初次渲染完成时执行,只会执行1次,常用于节点操作或......
  • Markdown基础用法
    目录Markdown基础用法标题一级标题二级标题字体引用图片超链接表格分隔线代码:Markdown基础用法本文是关于Markdown的基础用法,不涉及高级用法,只供自己学习总结使用标题#一级标题##二级标题(如有需求,可以有更多)实际效果:一级标题二级标题字体*你好*斜体**你好**......
  • 前端【小程序】03-小程序基础篇【组件】【导航】【图片】【轮播图】【表单】【区域滚
    navigator文档:https://developers.weixin.qq.com/miniprogram/dev/component/navigator.htmlurl:页面路径•支持相对和绝对路径•路径为空时会报错hover-class:点击态的样式,默认按下时会有一个样式•none禁用点击效果open-type:跳转方......
  • 持续性学习-Day14(前端基础HTML5)
    参考教学视频:秦疆 HTML(HyperTexctMarkupLanguage)超文本标记语言W3C:WorldWideWebConsortium万维网联盟W3C标准包括:结构化标准语言(HTML、XML)表现标准语言(CSS)行为标准(DOM、EXMAScript)1.基本标签<!--标题标签--><!--h1-h5--><!--段落标签--><p></p><!--......
  • Python科学计算基础教程 ([印] Hemant Kumar Mehta 著;陶俊杰, 陈小莉 译)
    电子版获取:2huo点vip我的读书笔记:NumPy和SciPy:介绍使用NumPy进行数组操作和SciPy进行科学计算的基础知识。数据可视化:使用Matplotlib、Seaborn或其他库创建图表和可视化。数据处理和清洗:使用Pandas进行数据操作、清洗和分析。机器学习和深度学习:使用Scikit-learn、Tens......
  • Python 数据结构和算法实用指南(三)
    原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d译者:飞龙协议:CCBY-NC-SA4.0第七章:哈希和符号表我们之前已经看过数组和列表,其中项目按顺序存储并通过索引号访问。索引号对计算机来说很有效。它们是整数,因此快速且易于操作。但是,它们并不总是对我们很有效......
  • Python 数据结构和算法实用指南(一)
    原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d译者:飞龙协议:CCBY-NC-SA4.0前言数据结构和算法是信息技术和计算机科学工程学习中最重要的核心学科之一。本书旨在提供数据结构和算法的深入知识,以及编程实现经验。它专为初学者和中级水平的研究Python编......