数据结构与算法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…

类和结构体的区别

类(class)和结构体(struct)是面向对象编程(Object-Oriented Programming,OOP)中常见的两种数据类型,它们在不同的编程语言中有一些共同之处,但也存在一些区别。以下是它们…

MongoDB聚合运算符:$anyElementTrue

$anyElementTrue运算符用来对数组元素进行逻辑判断&#xff0c;如果数组的任何一个元素为true则返回true&#xff0c;否则返回false。空数组返回false。 语法 { $anyElementTrue: [ <expression> ] }<expresssion>必须是能够被解析为数组的表达式。 使用 对于内…

5G——小区搜索流程

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

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

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

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

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

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

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

【STM32】重定向printf函数

【STM32】重定向printf函数 重定义fputc到串口 /******************************************************************************************/ /* 加入以下代码, 支持printf函数, 而不需要选择use MicroLIB */#if 1 #include <stdio.h> #if (__ARMCC_VERSION > 6…

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

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

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

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

C++ 中的 typedef 和 using

语法&#xff1a; typedef 的语法相对固定&#xff0c;而 using 在C11之后提供了更灵活的方式&#xff0c;可以定义模板别名等。模板别名&#xff1a; 在C11之后&#xff0c;using 可以用来定义模板别名&#xff0c;而 typedef 则无法做到这一点。作用域&#xff1a; 在命名空间…

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

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

环中最长子串/字符成环找偶数O

文章目录 题目描述输入描述输出描述示例1说明&#xff1a; 示例2说明&#xff1a; 说明&#xff1a;代码注意&#xff1a;printf中的%c 、%s 题目描述 给你一个字符串 s&#xff0c;字符串s首尾相连成一个环形 &#xff0c;请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串…

Rust CallBack的几种写法

模拟常用的几种函数调用CallBack的写法。测试调用都放在函数t6_call_back_task中。我正在学习Rust&#xff0c;有不对或者欠缺的地方&#xff0c;欢迎交流指正 type Callback std::sync::Arc<dyn Fn() Send Sync>; type CallbackReturnVal std::sync::Arc<dyn Fn…

第1章 计算机系统概述(2)

1.4操作系统结构 随着操作系统功能的不断增多和代码规模的不断变大,合理的操作系统结构,对于降低操作系统复杂度,提升操作系统安全与可靠性来说变得尤为重要。 分层法: 优点: 1.便于系统调试和验证,简化系统的设计和实现 2.易于扩充和维护 缺点: 1.合理定义各层较难(依赖关系比…

python语言常见面试题:什么是Python中的生成器(Generators)?它们与迭代器有什么不同?

在Python中&#xff0c;生成器和迭代器都是用于处理可迭代对象&#xff08;iterable&#xff09;的重要工具&#xff0c;它们允许我们按需生成或访问元素&#xff0c;而不是一次性加载整个数据结构到内存中。这在处理大量数据时特别有用&#xff0c;因为它可以节省内存并提高性…

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;国内的搜索引擎都是采用这种基础原理。&…