数据结构复习

基本概念和术语:

  • 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

  • 数据元素:是组成数据的,具有一定意义的基本单位,在计算机中通常为整体处理,也被称为记录。

  • 数据项:一个数据可以由若干个数据项组成。

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

  • 数据结构:相互之间存在一种活多种特定关系的数据元素的集合。

逻辑结构和物理结构

逻辑结构:是指数据对象中数据元素之间的相互关系

  • 集合结构:集合结构中的数据元素除了同属一个集合外,它们之间没有其他关系。

  • 线性结构:线性结构中的数据之间是一对一的关系。

  • 树形结构:树型结构中的元素之间存在一种一对多的层次关系。

  • 图形结构:图形结构的数据元素是多对多的关系。

物理结构:是指数据的逻辑结构在计算机中的存储形式

  • 顺序存储结构:把数据元素存放在地址连续的存储单元格里,其数据间的逻辑关系和物理关系是一致的。

  • 链式存储结构:把数据元素存放在任意的存储单元里,这组存储单元可以是连续的也可以是非连续的。

注:逻辑结构是面向问题的,而物理结构是面向计算机

数据类型

数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

  • 数据类型定义

    “抽象是指抽取出事物具有普遍性的本质”

  • 抽象数据类型:一个数学模型及定义在该模型上的一组操作。(抽象数据类型体现了程序设计中问题分解,抽象和信息隐藏的特性)

算法

定义

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法特性

具有五个基本特性:

  1. 输入:算法具有零个或多个输入。

  2. 输出:算法至少有一个或多个输出。

  3. 有穷性:算法在在执行有限的步骤后,自动结束不会出现无限循环,并且每一个步骤在可接受的时间内完成。

  4. 确定性:算法的每一步骤都有确定的含义不会出现二义性。

  5. 可行性:算法的每一步必须是可行的,也就是说每一步都能够通过执行有限次数完成。

算法设计的要求

  • 正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性,能正确反映问题的需求,能够得到问题的正确答案。

  • 可读性:算法设计的另一目的是为了便于阅读、理解和交流。

  • 健壮性:当输入数据不合法时,算法也能做出相关处理而不是产生异常1或莫名其妙的结果。

  • 时间效率高和存储量低

算法效率的度量方法

判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应关注主项(最高项)的阶数。

算法时间复杂度

定义

在进行算法分析时,语句总的执行次数 T(n)是关于问题规模 n 的函数,进而分析 T(n)随n的变化并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作 T(n)= O(f(n))。他表示随着问题规模n的增大,算法执行时间的增长率和 f(n)的增长率相同,乘坐算法的渐近时间复杂度,简称为时间复杂度。其中 f(n)是问题规模n的某个函数。

推导大O阶方法

  • 用常数1取代运行时间中所有加法常数。

  • 在修改后的运行次数函数中,只保留最高阶项。

  • 如果最高阶项存在且其系数不为1,则去除与这个项相乘的系数。

对数阶:

cnt := 1
for cnt < n {cnt = 2 * cnt
}

2^{x} = n

即:

x = logn

时间复杂度为 O(logn)

注:

  • 平均运行时间是所有情况中最有意义的,因为它是期望的运行时间。

  • 一般在没有特殊说明的情况下,都是指最坏时间复杂度。

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

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

相关文章

Shopee本土店成本利润如何核算?EasyBoss ERP帮您精准掌控

这几年做跨境电商的老板们都在说东南亚市场广阔&#xff0c;在东南亚开本土店流量大&#xff0c;为了赚钱兴冲冲跑去东南亚开本土店&#xff0c;每天看着店铺不停出单。 心里乐呵呵&#xff1a;“本土店是真赚钱&#xff0c;马上要走上人生巅峰了&#xff01;” 但每月实际一对…

[XYCTF新生赛]-Reverse:ez_rand解析(爆破时间戳,汇编结合反汇编)

无壳 查看ida 这里是利用time64获取种子&#xff0c;但是time64不是标准的函数&#xff0c;这里是伪随机数&#xff0c;简单地来说就是它不是通过时间来确定种子&#xff0c;所以我们没办法在脚本里直接调用它得到种子&#xff0c;那就意味着我们不知道种子是多少&#xff0c;…

jmeter -n -t 使用非GUI模式运行脚本说明

命令模式下执行jmx文件 jmeter -n -t fatie.jmx -l results\t4.jtl -e -o results\h1 表示以命令行模式运行当前目录下的脚本fatie.jmx,将结果存入当前目录下的results\t1.jtl,并且生成html格式的报告&#xff0c;写入文件夹results\h1。 说明&#xff1a;生成结果的文件夹r…

STL:list

文章目录 标准库中的listlist的构造list的迭代器list的容量list的访问list的修改 list的迭代器失效list的反向迭代器list 与 vector的对比 标准库中的list list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双…

电子抄表系统:当代能源管理的创新

1.界定与基本原理 电子抄表系统是一种利用通讯网技术&#xff0c;如wifi网络、物联网技术或有线连接&#xff0c;全自动收集并解决电磁能、水、气等公共事业表计数据信息解决方案。它取代了传统人工抄水表方法&#xff0c;提升了数据可靠性和质量。 2.功能和优点 -实时监控系…

【android】设置背景图片

改变值&#xff0c;可显示zai在 在theves下面的两个value都要增加名字代码 <item name"windowActionBar">false</item><item name"android:windowNoTitle">true</item><item name"android:windowFullscreen">tru…

西门子学习笔记6 - TCP通讯

1、主站设置 1、添加两个PLC在网络组态进行链接在一起&#xff0c;使用tcp链接 2、设置主站IP地址为&#xff1a;192.168.1.1 3、添加TSEND_C功能块 4、设置功能块参数连接 5、设置如下所示&#xff08;连接参数设置&#xff09; 6、设置如下所示&#xff08;连接块参数设置&a…

数字化高炉:高炉炼铁厂可视化解决方案

图扑高炉炼铁厂可视化系统通过实时监控和数据分析&#xff0c;全面展示高炉生产各环节的运行状态、温度和压力等关键参数。实现精准控制和决策支持&#xff0c;提高生产效率&#xff0c;减少能耗和污染&#xff0c;确保生产过程的安全和稳定。

生信软件21 - 多线程拆分NCBI-SRA文件工具pfastq-dump

在使用NCBI 工具fastq-dump拆分SRA文件时&#xff0c;拆分速度慢&#xff0c; fastq-dump拆分参数说明&#xff1a; –split-spot: 将双端测序分为两份&#xff0c;存放在同一个文件中–split-files: 将双端测序分为两份&#xff0c;存放在不同的文件&#xff0c;但是对于一方…

华为进军越野车领域 | 百能云芯

在最近召开的2024未来汽车发展峰会上&#xff0c;华为智能汽车解决方案BU的领军人物余承东分享了一项引人注目的计划&#xff1a;华为正积极评估进军硬派越野车型市场的可能性。 余承东明确表示&#xff0c;若决定进入该领域&#xff0c;华为不会简单地复制传统越野车型如奔驰G…

svg完成鼠标样式并使用

本次分享的是通过svg标签实现的鼠标样式&#xff0c;并在页面中进行使用的整个过程&#xff0c;最后还会分享快速制作svg的简单方式。 如有改进的方法或者发现错误也可以在评论区留言啊。 一、鼠标的svg样式 1.小飞机型 <svg width"32" height"32" xml…

【python】OpenCV—Merge Image

文章目录 np.hstack / np.vstackSlicecv2.addWeighted自定义渐变式叠加cv2.bitwise_not / cv2.bitwise_and / cv2.add np.hstack / np.vstack 利用 numpy 的 hstack 和 vstack&#xff0c;对图片进行拼接 import cv2 import numpy as nph, w 256,256 img1 cv2.resize(cv2.i…

Pico4 MR Unity零基础开发之开启MR透视

一、新建场景&#xff1a;SeethroughScene 1、新建场景。 二、添加 XR 摄像机进行设置 1、在 Hierarchy 窗口中&#xff0c;右击默认添加的 Main Camera&#xff0c;然后点击 Delete 将其删除。 2、点击 > XR > XR Origin (VR)&#xff0c;将 XR Origin 添加至场景 3、…

[leetcode hot 150]第七十题,爬楼梯(动态规划)

题目&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 爬到第 n 阶楼梯的方法数量等于爬到第 n-1 阶和第 n-2 阶的方法数量之和,即: f(n) f(n-1) f(n-2) 边界条件 还需要考虑边界…

【调试笔记-20240602-Linux-在 OpenWRT-23.05 上配置 frps 与 frpc 之间使用 TLS 进行传输】

调试笔记-系列文章目录 调试笔记-20240602-Linux-在 OpenWRT-23.05 上配置 frps 与 frpc 之间使用 TLS 进行传输 文章目录 调试笔记-系列文章目录调试笔记-20240602-Linux-在 OpenWRT-23.05 上配置 frps 与 frpc 之间使用 TLS 进行传输 前言一、调试环境操作系统&#xff1a;O…

Ubuntu 22.04安装cuda及Pytorch教程

文章目录 1、安装显卡驱动2、安装CUDA3、安装cuDNN4、安装pyTorch5、卸载CUDA参考资料 在PyTorch中使用CUDA&#xff0c;需要确保安装的PyTorch版本与你的CUDA版本兼容&#xff0c; 且正确安装了匹配GPU的CUDA Toolkit。以下是在PyTorch中使用CUDA的一般步骤&#xff1a; 检查C…

Padstack制作贴片和通孔焊盘

Padstack制作贴片和通孔焊盘 一、贴片焊盘制作 先选择SMD Pin&#xff0c;下面的pad geometry根据需求选择&#xff0c;一般是Circle和Rectangle&#xff0c;然后选择单位&#xff0c;mm制。 然后点击Design Layers&#xff0c;只需要修改Regular Pad常规焊盘就行&#xff0c…

七天进阶elasticsearch[two]

批量保存 批量保存是通过_bulk API来实现的 请求方式 post 请求地址 _bulk 通过_bulk操作文档,一般至少有两行参数 第一行用于确定要干什么(插入,修改还是删除) 第二行才是操作的数据; 当然以上是标准操作,也可以不遵循标准操作,使用不同的请求方式来完成 批量保存demo…

浅谈申请小程序地理位置权限的正确打开方式

小程序地理位置接口有什么功能&#xff1f; 这篇内容会教大家如何快速申请“获取当前的地理位置&#xff08;onLocationChange&#xff09;”接口&#xff0c;以便帮助大家顺利开通接口。以下内容是本人经历了多次的申请经历得出来的经验&#xff0c;来之不易&#xff0c;望大家…

【Python】让我们来生成二维码吧

准备操作 安装qrcode包&#xff1a;pip install qrcode[pil] 安装Pillow包&#xff1a;pip install Pillow 代码 import qrcode import hashlibdef generate_filename(url):data_bytes url.encode("utf-8")file_name hashlib.sha256(data_bytes).hexdigest()re…