数据结构与算法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.hqwc.cn/news/475170.html

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

相关文章

Linux第58步_备份busybox生成rootfs根文件系统

备份busybox生成rootfs根文件系统 打开终端 输入“ls回车” 输入“cd linux/回车” 输入“ls回车”,产看“linux”目录下的文件和文件夹 输入“cd nfs/回车”,切换到“nfs”目录 输入“ls回车”,产看“nfs”目录下的文件和文件夹 输入…

前端vue金额用逗号分隔

实现效果 代码 template部分 <el-input v-model"state.val"></el-input><div>{{ priceFor(state.val) }}</div> js部分 const state reactive({ val: });const priceFor (val)> {if(!val){return }else if(val.length<4){return…

day 20 (标准IO 与 文件IO)

标准IO与文件IO的区别 标准IO和文件IO的区别&#xff1a;1.标准IO是库函数,是对系统调用的封装2.文件IO是系统调用,是Linux内核中的函数接口3.标准IO是有缓存的4.文件IO是没有缓存的IO:b cd - 标准IOl s p文件IO:1.操作步骤&#xff1a;打开 -> 读/写 -> 关闭2.打开文件…

在线js代码格式化美化工具

在线js代码格式化 - BTool在线工具软件&#xff0c;为开发者提供方便。在线js代码格式化工具&#xff0c;可以对一段无格式的js代码进行格式化操作。本工具提供了多种格式化选项&#xff08;如&#xff1a;缩进、空格、括号位置等&#xff09;&#xff0c;使您能够根据自己的编…

react18虚拟滚动列表

不依赖第三方&#xff0c;借用react18api和原生JS实现一个虚拟滚动列表&#xff0c;如果你的项目比较小&#xff0c;又不想引入第三方的框架&#xff0c;可以拿去用&#xff1b; style样式 .record_list{// 这里是动态高度height: calc(100% - 116px);overflow-x: hidden;over…

基于springboot车辆充电桩管理系统源码和论文

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;车辆充电桩管理系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化&#xff0c;…

五分钟搭建本地大数据集群

引言 刚接触大数据以及部分接触大数据多年的伙伴可能从来没有自己搭建过一套属于自己的大数据集群&#xff0c;今天就花点时间聊聊怎么快速搭建一套属于自己、且可用于操作、调试的大数据集群 正文 本次搭建的组件都有以下服务以及对应的版本 hadoop&#xff08;3.2.4&…

糟糕,接口被刷了,怎么办?

前言 在面试时&#xff0c;经常会被问一个问题&#xff1a;如何防止别人恶意刷接口&#xff1f; 这是一个非常有意思的问题&#xff0c;防范措施挺多的。今天这篇文章专门跟大家一起聊聊&#xff0c;希望对你会有所帮助。 1 防火墙 防火墙是网络安全中最基本的安全设备之一&…

OpenAI重磅发布Sora——首个视频生成模型:利用文本-视频人工智能将想象变为现实

想象一下&#xff0c;现在你有一段文本话描述的故事&#xff0c;通过输入这段文本&#xff0c;就可以立刻展开一个生动详细的视频。这就是 OpenAI 神奇的 Sora&#xff0c;一个革命性的文本到视频的 AI 模型。Sora于2024年2月推出&#xff0c;凭借其仅凭文字提示就能生成现实和…

解锁Spring Boot中的设计模式—04.桥接模式:探索【桥接模式】的奥秘与应用实践!

桥接模式 桥接模式也称为桥梁模式、接口模式或者柄体&#xff08;Handle and Body&#xff09;模式&#xff0c;是将抽象部分与他的具体实现部分分离&#xff0c;使它们都可以独立地变化&#xff0c;通过组合的方式建立两个类之间的联系&#xff0c;而不是继承。 桥接模式是一种…

SpringBoot实战:打造企业资产管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

十大经典排序算法之一--------------堆排序(java详解)

一.堆排序基本介绍&#xff1a; 堆排序是利用堆这种数据结构而设计的一种排序算法&#xff0c;堆排序是一种选择排序&#xff0c;它的最坏&#xff0c;最好&#xff0c;平均时间复杂度均为O(nlogn)&#xff0c;它也是不稳定排序。堆是具有以下性质的完全二叉树&#xff1a;每个…