数据结构与算法java—算法时间复杂度计算

课程安排
在这里插入图片描述

一、数据结构与算法的重要性

在这里插入图片描述

在这里插入图片描述

数据结构:数据与数据间的关系

1.1、数据结构的研究内容

数据结构:研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。
非数值计算问题中的数学模型不是数学方程,而是诸如树、图、表之类的具有逻辑关系的数据。

1.2、基础概念和术语

1、数据

在这里插入图片描述

2、数据元素

在这里插入图片描述

3、数据项

在这里插入图片描述

4、数据对象

数据对象:是性质相同的数据元素的集合
在这里插入图片描述

5、数据元素与数据对象

在这里插入图片描述

1.2.2数据结构

1、数据结构的 基本概念
在这里插入图片描述
2、数据结构包括以下三方面
在这里插入图片描述
1)数据元素之间的逻辑关系—逻辑结构
在这里插入图片描述

2)数据的物理结构/存储结构:数据元素以及关系在计算机内存中的表示(映像)
a.逻辑结构的概念
在这里插入图片描述
b.逻辑结构的种类
划分方法一
在这里插入图片描述
划分方法二
在这里插入图片描述
c.存储结构的种类
四种基本的存储结构
在这里插入图片描述
顺序存储结构
在这里插入图片描述

在这里插入图片描述

链式存储结构
在这里插入图片描述
在这里插入图片描述

1.2.3数据类型和抽象数据类型

1、数据类型
在这里插入图片描述
在这里插入图片描述

2、抽象数据类型
在这里插入图片描述
在这里插入图片描述
基本操作定义格式说明

1.4、算法和算法分析

在这里插入图片描述

算法的定义

在这里插入图片描述

算法的描述

在这里插入图片描述

算法与程序

程序=数据结构+算法
在这里插入图片描述

算法特性

在这里插入图片描述

算法设计的要求

在这里插入图片描述

衡量算法好坏的标准

满足算法设计的基本要求下,通过算法效率的高低来判断。
算法效率考虑方面:时间和空间
在这里插入图片描述

算法时间效率的度量

在这里插入图片描述

事前分析法

在这里插入图片描述
每条语句执行一次所需要的时间一般随机器而异,故可假设执行每条语句所需的时间均为单位时间,故在比较时间时,可以将该语句执行一次所需要的时间约去,仅比较每条语句频度之和。
在这里插入图片描述

例子:

每次最外层的for需要判断跳出循环时n+1的情况,故执行次数为n+1次。
在这里插入图片描述

算法时间幅度的渐进表示法

在这里插入图片描述

例如

先找出算法的消耗时间T(n)的同数量级函数(即n趋向正无穷大时,T(n)/f(n)的极限值=不为0的常数),假设辅助函数f(n)=n^3
在这里插入图片描述

算法时间复杂度的定义

找出对算法运行时间贡献最大的执行的函数
在这里插入图片描述

基本语句的寻找方法

根据上面推断同数量级函数:执行次数最多的函数
在这里插入图片描述
在这里插入图片描述

算法时间复杂度

在这里插入图片描述

计算复杂算法的算法复杂度的两个方法
加法法则:算法时间复杂度较大的即是。
在这里插入图片描述

算法时间效率的比较

尽量设计复杂度低的算法
在这里插入图片描述

算渐进空间复杂度

在这里插入图片描述

例子

算法1只用了一个临时变量,属于原地工作,空间复杂度为O(1)
算法2用了一个数组,大小与原数组一样,空间复杂度O(n)
算法1的空间效率更高。
在这里插入图片描述

总结

在这里插入图片描述

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

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

相关文章

线程安全性的原理分析学习

初步认识Volatile 一段代码引发的思考 下面这段代码,演示了一个使用volatile以及没使用volatile这个关键字,对于变量更新的影响 package com.sp.demo;/*** author : lssffy* Description :* date : 2024/2/16 18:42*/ public class VolatileDemo {publi…

5G——小区搜索流程

小区搜索流程 小区搜索目标:读取到SIB1. 小区搜索流程概述:SIB1在PDSCH信道承载,承载SIB1的信道在哪个位置由PDCCH告诉,而PDCCH的基本信息由MIB告诉,MIB信息由广播信道PBCH广播出去,物理信道解调需要解调…

【机构vip教程】Charles(1):Charles的介绍及安装

Charles Charles 是在 Mac (Charles是跨平台的 )下常用的网络封包截取工具,在做移动开发、测试时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles是一个HTTP代理服务器,HTTP监视器,反转代…

算法学习系列(三十五):贪心(杂)

目录 引言一、合并果子(Huffman树)二、排队打水(排序不等式)三、货仓选址(绝对值不等式)四、耍杂技的牛(推公式) 引言 上一篇文章也说过了这个贪心问题没有一个规范的套路和模板&am…

【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:底层原理高级进阶》 &#x1f680…

OpenAI 发布文生视频大模型 Sora,AI 视频要变天了,视频创作重新洗牌!AGI 还远吗?

一、一觉醒来,AI 视频已变天 早上一觉醒来,群里和朋友圈又被刷屏了。 今年开年 AI 界最大的震撼事件:OpenAI 发布了他们的文生视频大模型 Sora。 OpenAI 文生视频大模型 Sora 的横空出世,预示着 AI 视频要变天了,视…

【机构vip教程】Selenium(2):selenium IDE工具

Selenium IDE工具: 该工具是一个用于构建脚本的初级工具,其实是FireFox的一个插件,拥有一个易于使用的界面。它拥有记录功能,能够记录用户执行的操作,并可以导出为可重复使用的脚本。如果没有编程经验,也可…

MySQL持久化不为人知的一面⭐️卡顿现象的根源与对策

MySQL持久化不为人知的一面⭐️卡顿现象的根源与对策 2024新年新气象,小菜同学又踏上了求职之路,但求职路艰辛,新年第一次面试又被面试官给问住了 面试官:你有没有遇到过因为持久化,把线程的查询、修改请求卡住的情况…

2024.2.18

使用fgets统计给定文件的行数 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {FILE *fpNULL;if((fpfopen("./test.txt","w"))NULL){perror("open err");return -1;}fputc(h,fp);fputc(\n,fp);fput…

算法练习-赎金信(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;哈希表 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。且所在课程未提供测试平台&#xff0c;故实现代码主要为自行测试的那种&#xff0c;以下内容均为个人笔记&#xff0c;旨…

数智化转型|两大电网、五大发电2024年重点工作路线图!

2024年1月&#xff0c;两大电网、五大发电集团陆续召开2024年工作会议&#xff0c;明确了2024年工作目标及重点路线图。从工作会议内容来看&#xff0c;不难发现&#xff0c;加快推动数智化转型&#xff0c;建设新型电力系统成为几大集团未来共同发展目标。会议内容如下&#x…

大数据,对于生活的改变

谷歌通过对于疾病的查询量可以预测一个个h1n1病毒的大爆发&#xff0c; 大数据时代对于人的考验 用户的搜索记录就是一种信息&#xff0c;这种信息会满足其基础相关的词条与其有关的词条&#xff08;最为原始的搜索机制&#xff0c;国内的搜索引擎都是采用这种基础原理。&…

从源代码安装 rocSOLVER 并 调试 rocSOLVER 在 Ubuntu 22.04 平台

0, 下载并编译 rocBLAS 的调试版本 sudo apt install python3.10-venv sudo apt install libmsgpack-dev sudo pip install joblibgit clone --recursive https://github.com/ROCm/rocBLAS.git $ cd rocBLAS/ $ ./install.sh -i -g构建时间也不短 1&#xff0c;下载并编译 roc…

【数据结构与算法】手搓JDK底层ArrayList底层 - 动态数组

数组 在介绍数组之前&#xff0c;我们先来看一段chatGPT给出的对于数组描述&#xff1a; 数组&#xff08;Array&#xff09;是一种线性数据结构&#xff0c;它由一组连续的内存空间组成&#xff0c;用来存储相同类型的数据元素。数组具有固定的大小&#xff0c;一旦创建后&a…

分享几个丝滑oled代码

最近一段业余时间在捣鼓esp32&#xff0c;发现对于一个搞diy的来说&#xff0c;它的生态&#xff0c;不管是开发环境、氛围还是可玩度都是独一挡的&#xff0c;国内外基于此的扩展真是太多了&#xff0c;找了几个通过按键/旋钮进行0.96寸OLED控制的案例&#xff0c;超级丝滑&am…

SQL中的各种连接的区别总结

前言 今天主要的内容是要讲解SQL中关于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where区别和用法&#xff0c;不用我说其实前面的这些基本SQL语法各位攻城狮基本上都用过。但是往往我们可能用的比较多的也就是左右连接和内连接了&#xff0c;而且对于许多初学…

JavaSE-02笔记【封装~this和static】

文章目录 1.封装&#xff08;掌握&#xff09;1.1 封装的理解1.2 不封装存在的问题1.3 怎么封装1.4 难点解惑1.5 练习 2. this 和 static2.1 this&#xff08;掌握&#xff09;2.1.1 this是什么2.1.2 this 在实例方法中使用2.1.3 this访问实例变量2.1.4 this扩展①2.1.5 this扩…

量子算法入门——3.狄拉克符号与量子态(2)

2. 光的极化和S-G实验 光的极化&#xff1a;表达出一方向电场的振动方式 S-G实验 银原子内部介绍 S-G实验过程 在炉子中将银原子高温灼烧&#xff0c;高温使得银原子具有极大的动能&#xff0c;从炉口向四周发射出来&#xff0c;炉口前设置两个小门构成两点一线&#xff…

Centos7挂载磁盘

1 查看未挂载的磁盘 命令&#xff1a; fdisk -l红框圈中的即是本次要挂载的磁盘&#xff0c;/dev/vdb 与 /dev/vda 相比&#xff0c;其没有下方的 /dev/vda1 等信息&#xff0c;代表 /dev/vdb 磁盘并没有进行过分区操作&#xff0c;是一个新加的硬盘。 2 对新建的磁盘进行分…

基于SSM的宁夏旅游网站平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的宁夏旅游网站平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring …