【数据结构】P0 三要素与五个特征

news2024/12/25 2:39:27

三要素与五个特征

  • 什么是数据结构
  • 数据结构的三要素
    • 逻辑结构
    • 存储结构
    • 数据的运算
  • 算法的五个特征
  • 时间复杂度

在这里插入图片描述


什么是数据结构

数据元素之间存在着一种或者多种关系,这种关系称为结构。


数据结构的三要素

数据结构的三要素:逻辑结构、存储结构、数据的运算。

逻辑结构

逻辑结构是数据之间的逻辑关系。

数据的逻辑结构分为线性结构和非线性结构。
线性结构的代表为线性表;
非线性结构有集合、树、图等。

存储结构

数据的存储结构又称为物理结构。数据的存储结构是用计算机语言实现的逻辑结构。

数据的主要存储结构包括:顺序存储、链式存储、索引存储和散列存储。
顺序存储:逻辑上相邻的元素在物理位置上也相邻。
链式存储:借助指针,逻辑上相邻的元素物理位置不相邻。
索引存储:借助索引表,将元素的物理位置记录。
散列存储:又称为哈希存储,通过计算得到物理位置地址。

数据的运算

数据的运算包括运算的定义和实现。
数据的定义是针对逻辑结构,指出运算的功能;
数据的实现是针对存储结构,指出运算的步骤。


算法的五个特征

有穷性:算法不能无穷执行;
确定性:对于相同的输入有相同的输出;
可行性:可以实现;
输入:一个算法有零个或多个输入;
输出:一个算法有一个或多个输出。


时间复杂度

时间复杂度为代码中执行最多那句话执行的次数的指数。

void fun(int n) {
	int i = 1;
	while(i <= n) {
		i = i * 2;
	}	
}

代码中执行次数最多的为循环内的语句:

i = i * 2

该语句执行次数为: l o g 2 n log_2n log2n,所以其时间复杂度为: O ( l o g 2 n ) O(log_2n) O(log2n)


加法规则
T ( n ) = T 1 ( n ) + T 2 ( n ) = O ( f ( n ) ) + O ( g ( n ) ) = O ( m a x ( f ( n ) , g ( n ) ) ) T(n)=T_1(n)+T_2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n))) T(n)=T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))

乘法规则
T ( n ) = T 1 ( n ) ∗ T 2 ( n ) = O ( f ( n ) ) ∗ O ( g ( n ) ) = O ( f ( n ) ∗ g ( n ) ) T(n)=T_1(n)*T_2(n)=O(f(n))*O(g(n))=O(f(n)*g(n)) T(n)=T1(n)T2(n)=O(f(n))O(g(n))=O(f(n)g(n))

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

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

相关文章

【面试题】手写防抖和节流

1. 手写防抖 debounce 首先介绍一个防抖的应用场景。假如需要监听一个输入框在输入文字后触发的change事件&#xff0c;那么通过keyup事件&#xff0c;每次输入文字后都会触发change事件&#xff0c;频繁触发的情况会影响系统的性能。因此可以使用防抖来降低触发频率&#xff…

flutter系列之:在flutter中使用导航Navigator

文章目录简介flutter中的NavigatorNavigator的使用总结简介 一个APP如果没有页面跳转那么是没有灵魂的&#xff0c;页面跳转的一个常用说法就是Navigator,flutter作为一个最为优秀的前端框架&#xff0c;Navigator肯定是必不可少的&#xff0c;那么在flutter中如何使用Navigat…

自建Git服务器

Gitea - Git with a cup of tea是一个国外团队基于国内一位大牛写的gogs开源项目&#xff08;Go语言开发&#xff09;二次开发的轻量Git社区&#xff0c;其稳定性非常好&#xff0c;而且是非常轻量级在个人亲测在1核1G的centos7主机上1个月不重启依然稳定运行&#xff0c;引用g…

chatgpt怎么去玩?解析各种用途和强大的功能

关于chatgpt怎么玩&#xff1f;他的一些原理以及玩法&#xff0c;相信大家都是挺好奇的吧&#xff0c;毕竟这个新的人工智能和以往我们玩过的&#xff0c;是完全不一样的&#xff0c;它具备更多的可玩性&#xff0c;而且具备有一定的学习能力&#xff0c;这就造就了它的强大&am…

记一次IDE的Docker插件实战(Dockfile篇)

IDEA下使用Docker插件制作镜像、推送及运行 前言 本部分主要根据IDEA的Docker插件实战(Dockerfile篇)_程序员欣宸的博客-CSDN博客_idea编写dockerfile一文所述内容进行实践&#xff0c;并对其中遇到的问题进行解答&#xff0c;从而串接多个知识点。 如何编写Dockfile 在Int…

【elasticsearch】elasticsearch es读写原理

一、前言&#xff1a; 今天来学习下 es 的写入原理。 Elasticsearch底层使用Lucene来实现doc的读写操作&#xff1a; Luence 存在的问题&#xff1a; 没有并发设计 lucene只是一个搜索引擎库&#xff0c;并没有涉及到分布式相关的设计&#xff0c;因此要想使用Lucene来处理海量…

「可信计算」与软件行为学

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…

亮个相吧小宝贝儿,五款压箱底的软件

今天要给大家推荐5款压箱底的宝贝软件了&#xff0c;百度搜索一下就能找到下载链接了。 1.开源浏览器——Firefox Firefox是一个自由的&#xff0c;开放源码的浏览器&#xff0c;适用于 Windows, Linux 和 MacOS X平台&#xff0c;Mozilla Firefox官方版体积小速度快&#xf…

【项目】Vue3+TS CMS 登录模块搭建

&#x1f4ad;&#x1f4ad; ✨&#xff1a;Vue3 TS   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: keep going&#x1f49c;&#x1f49c;   &#x1f338;: 如有错误或不足之处&#xff0c;希望可以指正&#xff0c;非常感谢&#x1f609;   Vue3TS一、…

微服务面试题:熔断和降级有什么区别?

文章目录引言1.概念不同1.1 熔断概念1.2 降级概念2.熔断器模型3.种状态之间的转换关系4.熔断策略5.熔断和降级的关系6.降级方式6.1、熔断降级&#xff08;不可用&#xff09;6.2、超时降级6.3、限流降级7.题外话8.总结引言 熔断和降级都是系统自我保护的一种机制&#xff0c;但…

进阶C语言 第四章-------《自定义类型》 (结构体、枚举、联合)知识点+完整思维导图+深入细节+通俗易懂+基本练习题+建议收藏

绪论 书接上回&#xff0c;通过上章的一些函数&#xff0c;我们可以让我们对于一些数值的调整有很大的帮助&#xff0c;本章自定义类型在C语言中同样也有着非常重要的地位&#xff0c;相信只要认真的阅读了本章&#xff0c;一定会对你有很大的帮助。 所以安全带系好&#xff0c…

使用Cmake从源码编译Lua

前置要求&#xff1a;电脑已经设置好了Cmake能够使用 首先下载Lua源码&#xff0c;文件后缀是tar.gz 各版本可以从这里找到&#xff1a;Lua - Version history 解压下载文件至所需目录&#xff0c;文件内容如下图&#xff1a; 解压即可。 在解压的文件夹&#xff08;本例是lua…

使用PyTorch-LSTM进行单变量时间序列预测的示例教程

时间序列是指在一段时间内发生的任何可量化的度量或事件。尽管这听起来微不足道&#xff0c;但几乎任何东西都可以被认为是时间序列。一个月里你每小时的平均心率&#xff0c;一年里一只股票的日收盘价&#xff0c;一年里某个城市每周发生的交通事故数。在任何一段时间段内记录…

Python控制本地浏览器并获取网页数据

1、前言 在自动化办公中&#xff0c;我们经常需要利用爬虫技能去批量获取网页的数据&#xff0c;但是有时候我们在利用爬虫的时候&#xff0c;会遇到一个问题&#xff0c;就是登录的时候要携带参数&#xff0c;不如账号、密码、其他的加密信息 就好比我现在公司&#xff0c;好…

JSP 质量管理系统myeclipse定制开发sqlserver数据库网页模式java编程jdbc

一、源码特点 JSP 质量管理系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开 发&#xff0c;数据库为SQLServer2008&#xff0c…

狂飙Linux平台,软件部署大全

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

图形的面积与周长计算程序-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-7】图形的面积与周长计算程序 欢迎点赞关注收藏 【案例介绍】 案例描述 长方形和圆形都属于几何图形&#xff0c;都有周长和面积&#xff0c;并且它们都有自己的周长和面积计算公式。使用抽象类的知识设计一个程序&#xff0c;可以计算不同图形的面积和周长。 运行…

Redis服务器配置

服务器基础配置服务器端设定 设置服务器以守护进程的方式运行daemonize yes|no 绑定主机地址bind 127.0.0.1 设置服务器端口号port 6379 设置数据库数量databases 16日志配置 设置服务器以指定日志记录级别loglevel debug|verbose|notice|warning开发期 debug 线上no…

【蓝桥杯PythonB组备赛】【Acwing周赛】第91场非常详细的过程思路分析理解分享Python解

好难哈哈哈我依旧只做对了第一题&#xff0c;第二题在比赛结束后才做出来…… 不过没关系每天努力一点啦~ 分享一下个人做的解析&#xff0c;供大家参考&#xff0c;一起努力哇&#xff01; 目录 A AcWing 4861. 构造数列 1.题目描述 2.思路分析 3.代码实现 B Ac…

从每刻到金蝶云星空通过接口配置打通数据

对接源平台:每刻刻报销是每刻科技旗下的产品&#xff0c;是国内领先的企业差旅及费用管理云平台&#xff0c;为事前差旅预订&#xff0c;事后报销的全流程费用管控服务。每刻报销融合人工智能云计算、移动互联网大数据等先进技术&#xff0c;融合财务共享和信用管理的理念&…