1、数据结构与算法(Python版-啃书)-绪论

1.1 计算机问题求解

一般而言,人们需要的不是解决一个具体问题的程序,而是解决一类问题的程序。

对于求平方根这样的简单问题,人们希望的也不是专用于求某个数(例如2)的平方根的函数,而是能求任何数的平方根的函数。

用计算机解决问题的过程分为两个阶段:

        1、程序开发者针对要解决的问题开发出相应的程序; ---- 程序设计

        2、使用者运行程序处理问题的具体实例,完成具体计算。 ---- 功能使用

1.1.1 程序开发过程

1、需求分析阶段---模糊需求细化

2、设计阶段---严格描述求解过程

3、编码阶段 -- 使用编程语言写代码实现

4、检查测试阶段 --- 检查语法错误,修正逻辑错误

1.3、算法和算法分析

1.3.1、问题、问题实例和算法

算法性质:有穷性、可行性、确定性、终止性、输入/输出。

算法描述:问题解决的办法,要方便人们的阅读和使用。常见的算法:枚举法、贪心法、分治法、回溯法、动态规划、分值限界法等。

程序:算法的实现,算法的落地。

算法设计模式:是人们对经验的总结,只能借鉴,不应作为教条。这些模式并不相互隔绝也不互相排斥。例如,一般而言复杂的问题都需要分解;而最简单的情况经常可能采用枚举和判断的方式处理。

1.3.2、算法的代价及其度量
 

在研究现实世界中的计算问题时,必须考虑计算的代价。该算法:在求解过程中需要多少存储空间?完成问题实例的求解需要多长时间?

同一个算法能应用于不同的实例,计算的实际代价通常与实例的规模(大小)有关。3000X3000的矩阵计算自然要比3X3的矩阵计算花费更多的时间和空间。因此,可以把一个算法的计算(时间和空间)开销定义为问题的实例规模的函数。

算法分析就是针对一个具体算法,设法确定一种函数关系,以问题实例的某种规模n为参量,反映出这个算法在处理规模n的问题实例时需要付出的时间(或者空间)代价。

同一算法,在大规模集合操作中,比如在一个数组中查找某一个数据,可能很快就找到了,可能要耗费很长时间才能找到。因此,在有关算法的研究和分析中,人们主要关注算法的最坏情况代价,有时也关注算法的平均代价。

“大O记法"描述算法性质:

        时间复杂度:T(n)=O(g(n))

        空间复杂度:S(n)=O(g(n))

常用的复杂度函数:

        O(1) ---- 常量复杂度

        O(log n) --- 对数复杂度

        O(n)  ----- 线性复杂度

        O(nlog n)

        O(n^2) --- 平方复杂度

        O(n^3) ---- 立方复杂度

        O(2^n) ---- 指数复杂度

1.3.3、算法分析

0.基本操作,认为其时间复杂度为O(1)。如果是函数调用,应该将其时间复杂度代入,参与整体时间复杂度的计算。
1.加法规则(顺序复合)。如果算法(或所考虑算法片段)是两个部分(或多个部分)的顺序复合,其复杂性是这两部分(或多部分)的复杂性之和。以两个部分为例:
        T(n)=Ti(n)+T(n)=O(T (n))+O(T2 (n))=O(max (T(n), T2 (n)))
其中T;(n)和T(n)分别为顺序复合的两个部分的时间复杂度。由于忽略了常量因子,加法等价于求最大值,取T(n)和 T2(n)中复杂度较高的一个。
2.乘法规则(循环结构)。如果算法(或所考虑的算法片段)是一个循环,循环体将执行T(n)次,每次执行需要T(n)时间,那么:
        T(n)一T(n)×T2(n)=O(T (n)×O(T(n))=O(T(n)×T2(n))
3.取最大规则(分支结构)。如果算法(或所考虑算法片段)是条件分支,两个分支的时间复杂性分别为T(n)和 T2(n),则有:
        T(n)=O(max(T(n),T2(n)))


1.4、数据结构

数据结构(data structure)研究数据之间的关联和组合的形式,总结其中的规律性,发掘特别值得注意的有用结构,研究这些结构的性质,进而研究如何在计算机里实现这些有用的数据结构,以支持相应组合数据的高效使用,支持处理它们的高效算法。

典型数据结构:集合结构、序列结构、层次结构、树形结构、图形结构

用数据结构存储信息,不仅要考虑如何把抽象的数据结构映射到计算机或程序可以表达操作的数据存储形式,还要考虑作用于具体数据结构的各种操作,如结构的建立、其中元素的访问、插入或删除元素等一般性操作。

数据结构上的操作需要通过算法实现。
 

1.4.3、python对象和数据结构

Python变量的值都是对象,可以是基本整数、浮点数等类型的对象,也可以是组合类型的对象,如 list等。

Python语言中变量的这种实现方式称为变量的引用语义,在变量里保存值(对象)的引用。采用这种方式,变量所需的存储空间大小一致,因为其中只需要保存--个引用。

Python里面的内存管理系统:变量在栈区,值在堆区。

 Python程序内部有一个存储管理系统,负责管理可用内存,为各种对象安排存储,支持灵活有效的内存使用。

python标准的数据结构:list(表)、tuple(元组)、dict(字典).

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

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

相关文章

微信小程序之将轮播图设计为组件

在components文件夹上点右键,新建component,命名为swiper 然后将我们之前的代码都拷贝到对应文件中, 然后我们的页面要引用这个组件, 在pages\index\index.json中引入: { "usingComponents": {"van…

【视频】解决FFmpeg将RTSP转RTMP流时,出现的卡死、出错等问题

【视频】郭老二博文之:图像视频汇总 1、简述 如果不修改图像内容,可以使用FFmpeg命令来将RTSP转RTMP流。 SRS视频服务器就是这么干的,它没有使用FFmpeg接口,而是直接使用FFmpeg命令来转流。 但是在使用中,约到了一些问题,比如转流时卡死、转流出错等等,下面描述怎么解…

报销单业务笔记

文章目录 业务点业务点-对公对私业务点-多系统标志 特殊业务入参入参报文 出参出参报文中间的逻辑多对多关系 其他应该是整体成功还是可以部分成功这种多对多关多关系有没有优雅的判断方式 报销单是个通用场景,有通用逻辑,在此基础上进行适度定制&#x…

25软考【软件评测师】:10天极限冲刺攻略(附知识点解析+冲刺攻略)

距离2025上半年“软件评测师”考试已经只剩最后一周多了,还没有准备好的小伙伴赶紧行动起来。为了帮助大家更好的冲刺学习,特此提供一份考前冲刺攻略。本指南包括考情分析、冲刺攻略两个部分,可以参考此指南进行最后的复习要领,相…

python 的 ​uv、pip​ 和 ​conda​ 对比和技术选型

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

Python logging模块使用指南

Python 的 logging 模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查。它提供了丰富的功能,包括多级日志记录、多种输出方式、灵活的格式配置等。以下是详细介绍: 一、为什么使用 logging 模块?…

开发技术.前端开发相关问题

第一部分 响应式布局 1. 几个布局单位概念 PX: px像素(Pixel) 相对长度单位。像素px是相对于显示器屏幕分辨率而言的。 PX特点 1. IE无法调整那些使用px作为单位的字体大小; 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体…

1. Go 语言环境安装

👑 博主简介:高级开发工程师 👣 出没地点:北京 💊 人生目标:自由 ——————————————————————————————————————————— 版权声明:本文为原创文章&#xf…

WPF自定义控件开发全指南:多内容切换与动画集成

WPF自定义控件开发全指南:多内容切换与动画集成 一、控件基础架构设计1.1 选择控件基类1.2 定义关键属性 二、动画系统集成2.1 淡入淡出动画实现2.2 滑动动画实现 三、视觉状态管理四、完整使用示例4.1 XAML声明4.2 动画触发逻辑 五、扩展与优化5.1 性能优化建议5.2…

数据结构 -- 顺序查找和折半查找

查找的基本概念 基本概念 查找:在数据集合中寻找满足某种条件的数据元素的过程 查找表(查找结构):用于查找的数据集合称为查找表,它由同一类型的数据结构元素(或记录)组成 关键字&#xff1…

汽车功能安全--TC3xx MBIST设计要点

英飞凌针对硬件故障的自测,提供了四种机制:PBIST、LBIST、MONBIST和MBIST。 LBIST和MONBIST我们已经聊过了,今天就快速介绍下MBIST。 MBIST,全程Memory Built-in Self Test,用于检测SRAM数据单元的完整性。 在26262…

openpi 入门教程

系列文章目录 目录 系列文章目录 前言 一、运行要求 二、安装 三、模型检查点 3.1 基础模型 3.2 微调模型 四、运行预训练模型的推理 五、在自己的数据上微调基础模型 5.1. 将数据转换为 LeRobot 数据集 5.3. 启动策略服务器并运行推理 5.4 更多示例 六、故障排除…

java加强 -Collection集合

集合是一种容器,类似于数组,但集合的大小可变,开发中也非常常用。Collection代表单列集合,每个元素(数据)只包含1个值。Collection集合分为两类,List集合与set集合。 特点 List系列集合&#…

深入理解ThingsBoard的Actor模型

1、ThingsBoard系统中定义了哪些Actor ✅ ThingsBoard Actor 创建机制与作用对照表: Actor 类型 何时创建 由谁创建 是否缓存 作用描述 SystemActor 系统启动时 DefaultActorService / ActorSystem ✅ 是 ★ ThingsBoard 平台服务级别管理器:负责创建所有的Actor AppActor

WPS一旦打开,就会修改默认打开方式,怎么解?

目录 前言 解决方法 结语 前言 电脑上同时存在WPS和微软的Office全家桶,但是我更喜欢用Office全家桶。前几天刚在设置改过来,忘记更改pdf文件打开默认应用。结果没过几天,不小心用WPS打开pdf文件时候,给我把默认设置全改回去了…

深度学习中--模型调试与可视化

第一部分:损失函数与准确率的监控(Loss / Accuracy Curve) 1. 为什么要监控 Loss 与 Accuracy? Loss 是模型优化的依据,但它可能下降了 Accuracy 反而没变(过拟合信号) Accuracy 才是评估效果的…

中间件-RocketMQ

RocketMQ 基本架构消息模型消费者消费消息模式顺序消息机制延迟消息批量消息事务消息消息重试最佳实践 基本架构 nameServer: 维护broker列表信息,客户端连接时只需要连接nameServer。可配置成集群。 broker:broker分为master和slave,master负…

anaconda3如何切换虚拟环境

在 Anaconda3 中切换虚拟环境可以通过 命令行 或 Anaconda Navigator 图形界面实现。以下是详细步骤: 方法1:通过命令行切换(推荐) 1. 查看所有虚拟环境 conda env list # 或 conda info --envs 输出示例: base …

【vue】axios网络请求介绍

一、基础使用 1.引入js文件 2.在methods中的函数里写 axios.get(路径) .then((res))>{ console.log(res.data);//控制台打印结果数据 this.listArrres.data//定义数组来接收返回来的数据 }) 二、参数传递 参数传递一般在路径后面使用 params:{ num:2,…

机器学习 --- KNN算法

机器学习 — KNN算法 文章目录 机器学习 --- KNN算法一,sklearn机器学习概述二,KNN算法---分类2.1样本距离判断2.2 KNN算法原理2.3 KNN缺点2.4 API2.5 使用sklearn中鸢尾花数据集实现KNN 一,sklearn机器学习概述 获取数据、数据处理、特征工…