04 2021 档案

摘要:概述 TaskGraph 系统是UE4一套抽象的异步任务处理系统 TaskGraph 可以看作一种”基于任务的并行编程“设计思想下的实现 通过TaskGraph ,可以创建任意多线程任务, 异步任务, 序列任务, 并行任务等,并可以指定任务顺序, 设置任务间的依赖, 最终形成一个任务图, 该系统按照 阅读全文
posted @ 2021-04-30 23:17 砥才人 阅读(3650) 评论(0) 推荐(2)
摘要:概述 UE4里,提供的多线程的方法: 继承 FRunnable 接口创建单个线程 创建 AsyncTask 调用线程池里面空闲的线程 通过 TaskGraph 系统来异步完成一些自定义任务 支持原生的多线程 std::thread 在GameThread线程之外的其他线程中 不要 spawning 阅读全文
posted @ 2021-04-30 01:25 砥才人 阅读(6756) 评论(2) 推荐(1)
摘要:一般先跳转到一个临时的关卡,然后异步加载目标关卡,同时展示Loading界面 对于含有流关卡的目标关卡,可以先载入子关卡 蓝图异步加载 无进度条 C++ 异步加载关卡 LoadPackageAsync bool bIsLoaded; UPROPERTY() FString LoadPackagePa 阅读全文
posted @ 2021-04-27 23:08 砥才人 阅读(8206) 评论(0) 推荐(0)
摘要:同步加载 同步加载会造成进程阻塞。 FObjectFinder / FClassFinder 在构造函数加载 ConstructorHelpers::FObjectFinder ConstructorHelpers::FClassFinder 参考 【UE4 C++ 基础知识】<10>资源的引用 L 阅读全文
posted @ 2021-04-27 17:37 砥才人 阅读(7285) 评论(0) 推荐(2)
摘要:2种引用方式 硬引用(Hard Reference) 即对象 A 引用对象 B,并导致对象 B 在对象 A 加载时加载 硬引用过多会导致运行时很多暂时用不到的资源也被加载到内存中 大量资源会导致进程阻塞,致使程序情动事件过长 用不大的资源也在内存中,会占用内存 软引用(Soft Reference) 阅读全文
posted @ 2021-04-26 21:22 砥才人 阅读(4318) 评论(0) 推荐(1)
摘要:概述 简单的说,接口提供一组公共的方法,不同的对象中继承这些方法后可以有不同的具体实现。 任何使用接口的类都必须实现这些接口。 实现解耦 解决多继承的问题 蓝图使用 使用方法 三种调用方法的区别 调用流关卡蓝图的接口函数 C++ 使用接口 本例使用一个Box Trigger 出发overlap 调用 阅读全文
posted @ 2021-04-25 17:43 砥才人 阅读(6138) 评论(0) 推荐(2)
摘要:概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系。 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到通知,并进行相关逻辑处理。 委托,又称代理,本质是一个特殊类的对象,它内部可以储存(一个或多个)函数 阅读全文
posted @ 2021-04-24 14:54 砥才人 阅读(5751) 评论(0) 推荐(1)
摘要:概述 TSet是一种快速容器类,(通常)用于在排序不重要的情况下存储唯一元素。 TSet 类似于 TMap 和 TMultiMap,但有一个重要区别:TSet 是通过对元素求值的可覆盖函数,使用数据值本身作为键,而不是将数据值与独立的键相关联。 TSet 可以非常快速地添加、查找和删除元素(恒定时间 阅读全文
posted @ 2021-04-24 14:52 砥才人 阅读(1889) 评论(0) 推荐(0)
摘要:概述 TMap主要由两个类型定义(一个键类型和一个值类型),以关联对的形式存储在映射中。 将数据存储为键值对(TPair<KeyType, ValueType>),只将键用于存储和获取 映射有两种类型:TMap 和 TMultiMap TMap 中的键是唯一的 TMultiMap 可存储多个相同的键 阅读全文
posted @ 2021-04-23 20:42 砥才人 阅读(6317) 评论(0) 推荐(1)
摘要:引言 算法分析 基本数据结构 概览 栈 stack 队列 Queue 双端队列 Deque 列表 List,链表实现 递归(Recursion) 定义及应用:分形树、谢尔宾斯基三角、汉诺塔、迷宫 优化问题与策略 查找与排序 查找:顺序查找与二分查找 排序:冒泡、选择、插入、希尔、归并、快速 散列、散 阅读全文
posted @ 2021-04-23 20:32 砥才人 阅读(183) 评论(0) 推荐(0)
摘要:概述 TArray 是UE4中最常用的容器类。其速度快、内存消耗小、安全性高。 其设计时未考虑扩展问题,因此建议在实际操作中勿使用 新建(new) 和 删除(delete) 创建或销毁 TArray 实例 TArray元素为数值类型时,被销毁时其中的元素也将被销毁。若在另一TArray中创建TArr 阅读全文
posted @ 2021-04-23 19:47 砥才人 阅读(7757) 评论(0) 推荐(1)
摘要:枚举 UENUM宏搭配BlueprintType可以将枚举暴露给蓝图,不使用的话,仅能在C++使用 //定义一个原生enum class enum class EMyType { Type1, Type2, Type3, }; namespace EState { enum Type { Stop, 阅读全文
posted @ 2021-04-22 21:07 砥才人 阅读(3000) 评论(0) 推荐(0)
摘要:基本数据类型 TCHAR TCHAR就是UE4通过对char和wchar_t的封装 char ANSI编码 wchar_t 宽字符的Unicode编码 使用 TEXT() 宏包裹作为字面值 TCHAR* TCharString = TEXT("Hello, World!"); // 引擎字符串(TC 阅读全文
posted @ 2021-04-22 21:05 砥才人 阅读(5477) 评论(0) 推荐(1)
摘要:UFunction声明 UFunction 是虚幻引擎4(UE4)反射系统可识别的C++函数。UObject 或蓝图函数库可将成员函数声明为UFunction,方法是将 UFUNCTION 宏放在头文件中函数声明上方的行中。宏将支持 函数说明符 更改UE4解译和使用函数的方式。 可利用函数说明符将U 阅读全文
posted @ 2021-04-22 21:03 砥才人 阅读(3492) 评论(1) 推荐(1)
摘要:属性声明 属性使用标准的C++变量语法声明,前面用UPROPERTY宏来定义属性元数据和变量说明符。 UPROPERTY([specifier, specifier, ...], [meta(key=value, key=value, ...)]) Type VariableName; 示例:位掩码 阅读全文
posted @ 2021-04-22 21:02 砥才人 阅读(6098) 评论(0) 推荐(1)
摘要:轴映射与动作映射 编辑器设置input+代码实现具体动作 void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(Pl 阅读全文
posted @ 2021-04-22 20:25 砥才人 阅读(3570) 评论(0) 推荐(0)
摘要:新标签打开或者下载看大图 更新: 增加 编程子系统 Subsystem 思维导图 Character pipeline 阅读全文
posted @ 2021-04-22 17:45 砥才人 阅读(1692) 评论(1) 推荐(1)
摘要:新标签打开或者下载看大图 阅读全文
posted @ 2021-04-22 17:43 砥才人 阅读(1915) 评论(0) 推荐(1)
摘要:新标签打开或者下载看大图 思维导图 Engine Structure Pipeline Programming Pipeline Blueprint Pipeline 阅读全文
posted @ 2021-04-22 17:36 砥才人 阅读(2526) 评论(0) 推荐(2)
摘要:某些程序对内存分配有特殊要求,不能直接使用标准内存管理机制 重载new和delete算符可控制内存分配的过程 19.1.1 重载new和delete 说法“重载new和delete”,但重载new和delete与重载其他算符的过程非常不同 使用new/new []表达式的过程: 调用名为operat 阅读全文
posted @ 2021-04-22 17:08 砥才人 阅读(385) 评论(0) 推荐(1)
摘要:大规模应用程序的特殊要求包括: 在独立开发的子系统之间协同处理错误:异常处理 使用各种库(可能包含独立开发的库)进行协同开发:命名空间 对比较复杂的应用概念建模:多重继承 18.1 异常处理 异常处理机制允许程序在运行时对出现的问题进行通信并处理 异常使得可将问题的检测和解决分离,一部分用于检测问题 阅读全文
posted @ 2021-04-22 17:06 砥才人 阅读(443) 评论(0) 推荐(0)
摘要:17.1 tuple类型 tuple是类似pair的模板: pair和tuple的成员类型都可以不相同 pair恰好有两个成员,tuple可有任意数量的成员 按照不同参数数量和类型实例化出的tuple是不同类型 tuple类型及其伴随类型和函数都在头文件tuple中 17.1.1 定义和初始化tup 阅读全文
posted @ 2021-04-22 17:02 砥才人 阅读(281) 评论(0) 推荐(0)
摘要:面向对象编程(OOP)和泛型编程(GP)都能处理在编写程序时类型未知的情况 OOP能处理运行时获取类型的情况 GP能处理编译期可获取类型的情况 标准库的容器、迭代器、算法都是泛型编程 编写泛型程序时独立于任何类型,使用泛型程序时提供类型,程序实例在该类型上运行 模板是泛型编程的基础。一个模板是一个创 阅读全文
posted @ 2021-04-22 16:48 砥才人 阅读(526) 评论(0) 推荐(0)
摘要:15.1 OOP:概述 **面向对象程序设计(object-oriented programming)**的核心思想是:数据抽象、继承、动态绑定 使用数据抽象,可将类的接口与实现分离 使用继承,可定义相似的类型并对其相似关系建模 使用动态绑定,可在一定程度上忽略相似类型的区别,以统一的方式使用它们的 阅读全文
posted @ 2021-04-22 16:47 砥才人 阅读(429) 评论(0) 推荐(0)
摘要:14.1 基本概念 重载的运算符是特殊的函数:名字由关键字operator后接要定义的算符共同组成,也有返回类型、参数列表、函数体。 重载运算符函数的参数量与该算符作用的运算对象数量一样多 除重载调用运算符operator()外,其他重载运算符不能有默认实参 若一个重载运算符是成员函数,则其第一个运 阅读全文
posted @ 2021-04-22 16:38 砥才人 阅读(370) 评论(0) 推荐(0)
摘要:定义一个类时,可显式或隐式的指定在此类型对象上拷贝、移动、赋值、销毁时做什么。通过5种成员函数实现拷贝控制操作: 拷贝构造函数:用同类型的另一个对象初始化本对象时做什么(拷贝初始化) 拷贝赋值算符:将同类型的另一个对象赋值给本对象时做什么(拷贝赋值) 移动构造函数:用同类型的另一个对象初始化本对象时 阅读全文
posted @ 2021-04-22 16:36 砥才人 阅读(297) 评论(0) 推荐(0)
摘要:对象的生存期: 全局对象:程序启动时创建,程序结束时销毁 局部static对象:第一次使用前创建,程序结束时销毁 局部自动对象:定义时创建,离开定义所在程序块时销毁 动态对象:生存期由程序控制,在显式创建时创建,显式销毁时销毁 动态对象的正确释放极易出错。为安全使用动态对象,标准库定义了智能指针来管 阅读全文
posted @ 2021-04-22 16:34 砥才人 阅读(313) 评论(0) 推荐(0)
摘要:关联容器的元素按照关键字来保存和访问,而顺序容器的元素是按照在容器中的位置来保存和访问 关联容器支持高效的关键字查找和访问 2种关联容器: map中的元素是关键字-值对(key-value对),关键字作为索引,值表示与索引相关的数据 set中的元素只包含关键字 8个关联容器: map 关联数组,保存 阅读全文
posted @ 2021-04-22 16:31 砥才人 阅读(218) 评论(0) 推荐(0)
摘要:标准库未给容器添加大量功能,而是提供一组独立于容器的泛型算法 算法:它们实现了一些经典算法的公共接口 泛型:它们可用于不同类型的容器和不同类型的元素 利用这些算法可实现容器基本操作很难做到的事,例如查找/替换/删除特定值、重排顺序等 10.1 概述 大多数算法定义在algorithm头文件中,另外一 阅读全文
posted @ 2021-04-22 16:25 砥才人 阅读(273) 评论(0) 推荐(0)
摘要:一个容器是特定类型对象的集合 顺序容器中元素的顺序与其加入容器的位置对应 关联容器中元素的顺序由其关联的关键字决定,关联容器分为有序关联容器和无序关联容器 所有容器类共享公有接口,不同容器按不同方式扩展。 标准库还提供了3种容器适配器,为容器操作定义了不同的接口 9.1 顺序容器概述 所有容器都可快 阅读全文
posted @ 2021-04-22 16:21 砥才人 阅读(389) 评论(0) 推荐(1)
摘要:C++语言不直接处理输入输出,而是通过标准库中的一组类来处理IO 1.2节介绍的IO库: istream(输入流)类型,提供输入 ostream(输出流)类型,提供输出 cin,是istream对象,从标准输入读取数据 cout,是ostream对象,向标准输出写数据 cerr,是ostream对象 阅读全文
posted @ 2021-04-22 16:13 砥才人 阅读(314) 评论(0) 推荐(0)
摘要:类的基本思想是数据抽象和封装 数据分离抽象是一种依赖于接口和实现分离的编程/设计技术。接口包括用户能执行的操作,实现包括类的数据成员、接口实现的函数体、定义类所需的各种私有函数 封装实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节。用户只能使用接口而无法访问实现部分 类要实现数据抽象和封装, 阅读全文
posted @ 2021-04-22 16:10 砥才人 阅读(231) 评论(0) 推荐(0)
摘要:6.1 函数基础 函数定义包括:返回类型、函数名字、由0个或多个形参组成的列表以及函数体 通过调用运算符()来执行函数,它作用于一个表达式,该表达式是函数或函数指针。圆括号内是一个逗号隔开的实参列表,调用时用实参初始化形参。 调用函数完成两项工作: 隐式定义形参并用实参初始化函数对应的形参 将控制权 阅读全文
posted @ 2021-04-22 16:07 砥才人 阅读(337) 评论(0) 推荐(0)
摘要:C++提供了一组控制流语句,包括条件执行语句、循环语句、跳转语句。 5.1 简单语句 空语句 ; ,最简单的语句 别漏写分号,也别多写 while(cin>>s && s!=sought) ; //空语句,加上该注释代表有意为之 //语法上需要,但逻辑上不需要,可使用空语句 while(iter!= 阅读全文
posted @ 2021-04-22 16:02 砥才人 阅读(221) 评论(0) 推荐(0)
摘要:表达式由一个或多个运算对象组成,对表达式求值返回结果。 字面值和变量是最简单的表达式 把运算符和运算对象组合可得到复杂表达式。 4.1 基础 4.1.1 基本概念 一元运算符作用于一个对象,如取地址符&、解引用符* 二元运算符作用于两个对象,如==、* 三元运算符?:。 函数调用也是特殊的运算符,它 阅读全文
posted @ 2021-04-22 15:56 砥才人 阅读(228) 评论(0) 推荐(0)
摘要:string和vector是两类最重要的标准库类型 strng表示可变长的字符序列 vector存放某种给定类型对象的可变长序列。 3.1 命名空间的using声明 using namespace::name; //using声明 using std::cin; using std::cout;us 阅读全文
posted @ 2021-04-22 15:50 砥才人 阅读(444) 评论(0) 推荐(0)
摘要:2.1 基本内置类型 基本数据类型包含了算术类型(arithmetic type)和空类型(void) 算数类型,包含了字符、整型数、布尔值和浮点数 空类型,不对应具体的值 2.1.1 算术类型 算术类型分为两类:整型(integral type,包含字符和布尔)和浮点型 bool 取值true或f 阅读全文
posted @ 2021-04-22 15:40 砥才人 阅读(523) 评论(0) 推荐(0)
摘要:1.1 编写一个简单的程序 int main() { return 0; } 函数 包含4部分: 返回类型(return type) 函数名(function name) 形参列表(parameter list,允许为空) 函数体(function body) main 函数 C程序必有函数,操作系 阅读全文
posted @ 2021-04-22 15:25 砥才人 阅读(583) 评论(0) 推荐(0)
摘要:第1章 开始 第Ⅰ部分 C++基础 第2章 变量和基本类型 第3章 字符串、向量和数组 第4章 表达式 第5章 语句 第6章 函数 第7章 类 第 Ⅱ 部分 C++标准库 第8章 IO库 第9章 顺序容器 第10章 泛型算法 第11章 关联容器 第12章 动态内存 第 Ⅲ 部分 类设计者的工具 第1 阅读全文
posted @ 2021-04-22 15:17 砥才人 阅读(496) 评论(0) 推荐(0)
摘要:最短路径问题 概念 可以通过“traceroute”命令来跟踪信息传送的路径: traceroute www.lib.pku.edu.cn 可以将互联网路由器体系表示为一个带权边的图 路由器作为顶点,路由器之间网络连接作为边权重可以包括网络连接的速度、网络负载程度、分时段优先级等影响因素 作为一个抽 阅读全文
posted @ 2021-04-22 14:46 砥才人 阅读(361) 评论(0) 推荐(0)
摘要:互联网 我们关注一下互联网相关的非常巨大图: 由主机通过网线(或无线)连接而形成的图; 以及由网页通过超链接连接而形成的图。 网页形成的图 以网页(URI作为id)为顶点,网页内包含的超链接作为边,可以转换为一个有向图。 得出这样的结论:网络具有一种基础结构,使得在某种程度上相似的网页相互聚集。 强 阅读全文
posted @ 2021-04-22 14:43 砥才人 阅读(676) 评论(0) 推荐(0)
摘要:概念 很多问题都可转化为图, 利用图算法解决 例如早餐吃薄煎饼的过程 制作松饼的难点在于知道先做哪一步。从图7-18可知,可以首先加热平底锅或者混合原材料。我们借助拓扑排序这种图算法来确定制作松饼的步骤。 从工作流程图得到工作次序排列的算法,称为“拓扑排序” 拓扑排序处理一个DAG(向无环图), 输 阅读全文
posted @ 2021-04-22 14:42 砥才人 阅读(264) 评论(0) 推荐(0)
摘要:骑士周游问题 概念 在一个国际象棋棋盘上, 一个棋子“马”(骑士) , 按照“马走日”的规则, 从一个格子出发, 要走遍所有棋盘格恰好一次。把一个这样的走棋序列称为一次“周游” 在8×8的国际象棋棋盘上, 合格的“周游”数量有1.305×1035这么多, 走棋过程中失败的周游就更多了 采用图搜索算法 阅读全文
posted @ 2021-04-22 14:35 砥才人 阅读(1393) 评论(0) 推荐(0)
摘要:词梯Word Ladder问题 要求是相邻两个单词之间差异只能是1个字母,如FOOL变SAGE: FOOL >> POOL >> POLL >> POLE >> PALE>> SALE >> SAGE 目标是找到最短的单词变换序列 用图表示单词之间的关系; 用一种名为广度优先搜索 BFS的图算法找到 阅读全文
posted @ 2021-04-22 14:33 砥才人 阅读(526) 评论(0) 推荐(0)
摘要:概念 图Graph是比树更为一般的结构, 也是由节点和边构成 实际上树是一种具有特殊性质的图 图可以用来表示现实世界中很多有意思的事物,包括道路系统、城市之间的航班、互联网的连接,甚至是计算机专业的一系列必修课 定义 一个图G可以定义为G=(V, E) 其中V是顶点的集合, E是边的集合, E中的每 阅读全文
posted @ 2021-04-22 14:31 砥才人 阅读(372) 评论(0) 推荐(0)
摘要:定义 能够在key插入时一直保持平衡的二叉查找树: AVL树 利用AVL树实现ADT Map, 基本上与BST的实现相同,不同之处仅在于二叉树的生成与维护过程 平衡因子 AVL树的实现中, 需要对每个节点跟踪“平衡因子balance factor”参数 \(balance Factor=height 阅读全文
posted @ 2021-04-22 14:29 砥才人 阅读(369) 评论(0) 推荐(0)
摘要:二叉搜索树,它是映射的另一种实现 映射抽象数据类型前面两种实现,它们分别是列表二分搜索和散列表。 操作 Map()新建一个空的映射。 put(key, val)往映射中加入一个新的键-值对。如果键已经存在,就用新值替换旧值。 get(key)返回key对应的值。如果key不存在,则返回None。 d 阅读全文
posted @ 2021-04-22 14:26 砥才人 阅读(179) 评论(0) 推荐(0)
摘要:概念 队列有一个重要的变体,叫作优先级队列。 和队列一样,优先级队列从头部移除元素,不过元素的逻辑顺序是由优先级决定的。 优先级最高的元素在最前,优先级最低的元素在最后。 实现优先级队列的经典方法是使用叫作二叉堆(Binary Heap)的数据结构。 二叉堆的入队操作和出队操作均可达到O(log n 阅读全文
posted @ 2021-04-22 14:24 砥才人 阅读(264) 评论(0) 推荐(0)
摘要:遍历方式 前序遍历 在前序遍历中,先访问根节点,然后递归地前序遍历左子树,最后递归地前序遍历右子树。 中序遍历 在中序遍历中,先递归地中序遍历左子树,然后访问根节点,最后递归地中序遍历右子树。 后序遍历 在后序遍历中,我们先递归地后序遍历访问左子树和右子树,最后访问根节点 实现代码 三种遍历的外部函 阅读全文
posted @ 2021-04-22 14:15 砥才人 阅读(266) 评论(0) 推荐(0)
摘要:解析树(语法树) 将树用于表示语言中句子, 可以分析句子的各种语法成分, 对句子的各种成分进行处理 语法分析树 程序设计语言的编译 词法、语法检查 从语法树生成目标代码 自然语言处理 机器翻译 语义理解 表达式解析 \(((7+3)*(5-2))\) 叶节点保存操作数,内部节点保存操作符 树中每个子 阅读全文
posted @ 2021-04-22 14:13 砥才人 阅读(435) 评论(0) 推荐(0)
摘要:概念 一种基本的“非线性”数据结构——树 根 枝 叶 广泛应用于计算机科学的多个领域 操作系统 图形学 数据库 计算机网络 特征 第一个属性是层次性,即树是按层级构建的,越笼统就越靠近顶部,越具体则越靠近底部。 第二个属性是,一个节点的所有子节点都与另一个节点的所有子节点无关。比如,猫属的子节点有家 阅读全文
posted @ 2021-04-22 14:10 砥才人 阅读(371) 评论(0) 推荐(0)
摘要:散列 Hasing 前言 如果数据项之间是按照大小排好序的话,就可以利用二分查找来降低算法复杂度。 现在我们进一步来构造一个新的数据结构, 能使得查找算法的复杂度降到O(1), 这种概念称为“散列Hashing“ 能够使得查找的次数降低到常数级别, 我们对数据项所处的位置就必须有更多的先验知识。 如 阅读全文
posted @ 2021-04-22 14:07 砥才人 阅读(467) 评论(0) 推荐(0)
摘要:冒泡排序O(n²) —— bubbleSort 定义 冒泡排序多次遍历列表。它比较相邻的元素,将不合顺序的交换。每一轮遍历都将下一个最大值放到正确的位置上。本质上,每个元素通过“冒泡”找到自己所属的位置。 冒泡排序的算法思路在于对无序表进行多趟比较交换, 每趟包括了多次两两相邻比较, 并将逆序的数据 阅读全文
posted @ 2021-04-22 14:02 砥才人 阅读(299) 评论(0) 推荐(0)
摘要:顺序查找 定义 通过下标, 按照顺序来访问和查找数据项 要确定列表中是否存在需要查找的数据项 算法分析 要点 确定基本计算步骤 基本计算步骤必须要足够简单, 并且在算法中反复执行 在查找算法中, 这种基本计算步骤就是进行数据项的比对,比对的次数决定了算法复杂度 分类 无序列表顺序查找O(n) 数据在 阅读全文
posted @ 2021-04-22 13:41 砥才人 阅读(309) 评论(0) 推荐(0)
摘要:分治策略:解决问题的典型策略,分而治之 将问题分为若干更小规模的部分 通过解决每一个小规模部分问题,并将结果汇总得到原问题的解 递归算法与分治策略 递归三定律 体现了分支策略 应用相当广泛 排序 查找 遍历 求值等 优化问题 计算机科学中许多算法都是为了找到某些问题的最优解 两点之间最短路径 能最好 阅读全文
posted @ 2021-04-22 13:34 砥才人 阅读(216) 评论(0) 推荐(0)
摘要:定义 递归是一种解决问题的方法,它把一个问题分解为越来越小的子问题,直到问题的规模小到可以被很简单直接解决。 通常为了达到分解问题的效果,递归过程中要引入一个调用自身的函数。 举例 数列求和 def listsum(numlist): if len(numlist) == 1: return num 阅读全文
posted @ 2021-04-22 13:31 砥才人 阅读(464) 评论(0) 推荐(0)
摘要:无序表链表 定义 一种数据项按照相对位置存放的数据集 抽象数据类型无序列表 UnorderedList 方法 list() 创建一个新的空列表。它不需要参数,而返回一个空列表。 add(item) 将新项添加到列表,没有返回值。假设元素不在列表中。 remove(item) 从列表中删除元素。需要一 阅读全文
posted @ 2021-04-22 13:21 砥才人 阅读(314) 评论(0) 推荐(0)
摘要:定义 双端队列(deque 或 double-ended queue)与队列类似,也是一系列元素的有序组合。其两端称为队首(front)和队尾(rear),元素在到达两端之前始终位于双端队列中。 元素可以从两端插入,也可以从两端删除。 数据项不满足严格的“后进先出”或“先进先出”顺序,需自行维护 抽 阅读全文
posted @ 2021-04-22 13:13 砥才人 阅读(192) 评论(0) 推荐(0)
摘要:定义 一系列有序的元素的集合,新元素的加入在队列的一端,这一端叫做“队尾”(rear),已有元素的移除发生在队列的另一端,叫做“队首”(front)。 当一个元素被加入到队列之后,它就从队尾开始向队首前进,直到它成为下一个即将被移出队列的元素。 “先进先出”(FIFO, first-in first 阅读全文
posted @ 2021-04-22 13:11 砥才人 阅读(272) 评论(0) 推荐(0)
摘要:定义 一个项的有序集合 添加项和移除项都发生在同一“端” 分为栈顶和栈底 LIFO 先进后出 举例 浏览器后退 word undo 抽象数据类型 栈的操作如下: Stack() 创建一个新的空栈。它不需要参数,并返回一个空栈。 Push(item) 将新项添加到堆栈的顶部。它需要参数 item 并且 阅读全文
posted @ 2021-04-22 13:08 砥才人 阅读(255) 评论(0) 推荐(0)
摘要:目标 了解抽象数据类型:栈 stack、队列 queue、双端队列 deque 和列表 list; 用 Python 列表数据结构,来实现 stack/queue/deque 抽象数据类型的构建; 了解各种基本线性数据结构的性能和使用方法; 了解前缀、中缀和后缀表达式; 采用栈 stack 对后缀表 阅读全文
posted @ 2021-04-22 13:03 砥才人 阅读(153) 评论(0) 推荐(0)
摘要:什么是算法分析 算法是问题解决的通用的分步的指令的聚合 算法分析主要就是从计算资源的消耗的角度来评判和比较算法。 计算资源指标 存储空间或内存 执行时间 影响算法运行时间的其他因素 分为最好、最差和平均情况,平均状况体现主流性能 累计求和案例 import time def sumOFN2(n): 阅读全文
posted @ 2021-04-22 12:52 砥才人 阅读(589) 评论(0) 推荐(0)
摘要:学习来源 北京大学-数据结构与算法Python版 目标 了解计算机科学、程序设计和问题解决的基本概念 计算机科学是对问题本身、问题的解决、以及问题求解过程中得出的解决方案的研究。面对一 个特定问题,计算机科学家的目标是得出一个算法(algorithm) ,写出一组解决该问题可能出现的任何情况的步步为 阅读全文
posted @ 2021-04-22 12:39 砥才人 阅读(158) 评论(0) 推荐(0)