- 博客(25)
- 收藏
- 关注
原创 关系的基本概念及其性质
设A和B是两个集合,A×B的任一子集R称为从A到B的一个二元关系。如果(a,b)∈R,则a与b符合关系R,记为aRb;如果(a,b) R,则a与b不符合关系R,记为aRb。如果A=B,则称R为A上的二元关系。
2023-04-07 20:39:11
4361
原创 二叉树词典
否则,如果x比根节点处的元素小,x就只可能在左子树中被找到,而如果x比根节点处的元素大,x就只可能出现在右子树中(还是因为二叉查找树属性)。原因在于,x比n的左子树中的所有元素都大,而y大于x(因为y在n的右子树中),所以y也比n左子树的所有元素都大。而对n的右子树来说,y也是适合作为根节点的,因为选出的y是右子树中的最小元素。二叉查找树(BST)是一种带标号的的二叉树,以下属性对这种二叉树的每个节点x都成立:x的左子树中所有节点的标号都小于x的标号,而其右子树中所有节点的标号都大于x的标号。
2023-02-26 10:20:46
205
原创 程序的运行时间
我们现在要给出某个函数是另一个函数的“大O”的正式定义。设有函数T (n ) ,这通常是某个程序的运行时间,以输入大小为n的函数来度量。要让函数适用于度量程序的运行时间,我们假设有:(1) 参数n被限定为非负整数;(2) 值T (n ) 对所有的参数n来说都非负。设 f (n ) 是某个定义在非负整数n之上的函数。如果除了对某些较小的n值之外,T ( n) 至多是某个常数乘以 f (n ),我们就可以说“T ( n) 是 O(f(n))”。
2023-02-25 10:10:21
1174
原创 归并排序算法
现在要考虑一种名为归并排序的与选择排序有着天壤之别的排序算法。递归的方式能最好地描述归并排序,而归并排序展示了分治法的强大,在这种排序方法中,我们通过将问题“分为”大小减半的两个相似问题来为表(a1,a2,a3,…,an),从原则上讲,可以首先将原表分为两个元素任选的大小相等的表,不过在我们开发的程序中,将会将其分为一个含有奇数编号元素的表(a1,a3,a5,…),以及一个含有偶数编号元素的表(a2,a4,a6…),接着单独为大小减半的两个表排序。
2023-02-07 22:21:50
215
原创 树的数据类型
在很多情况下,信息会具有家谱或组织图中那样的分层结构或嵌套结构。为分层结构建模的抽象被称为树,而且这种数据结构是计算机科学领域中最为基础的内容之一。它是包括Lisp在内的数种程序设计语言的底层模型。
2023-02-07 20:37:13
393
原创 归纳和递归
在递归定义(或归纳定义)中,我们用一类或多类紧密相关的对象或事实本身来对它们进行定义。这种定义一定不能是无意义的,比如“某个部件是某个有某种颜色的部件”,也不能是似是而非的,比如“当且仅当某事物不是glotz时它才是glotz”。归纳定义涉及:(1) 一条或多条依据规则,在这些规则中,要定义一些简单的对象;(2) 一条或多条归纳规则,利用这些规则,通过集合中较小的对象来定义较大的对象。例如,我们可以通过迭代算法定义了阶乘函数:将1X2X…Xn相乘得到n!。其实,还可以按照以下方式递归地定义n!的值。
2023-02-06 20:23:29
467
原创 迭代和归纳
(1) 迭代技术。反复执行一系列操作的最简单方法就是使用迭代结构,比如C语言中的for语句。(2) 递归程序设计。C语言及其他众多语言都允许函数递归,即函数可以直接或间接地调用自己。对新手程序员来说,编写迭代程序通常比写递归程序更安全。递归程序更易于编写、分析和理解。(3) 归纳证明。“归纳证明”是用来表明命题为真的一项重要技术。(4)归纳定义。
2023-02-04 20:43:29
264
原创 拷贝构造函数
如果用户定义有参构造函数,c++不再提供默认无参构造,但是会提供默认拷贝构造。值传递的方式给函数参数传值(实参传递给形参的过程,复制)如果用户定义拷贝构造函数,c++不会提供其他构造函数。使用一个已经创建完毕的对象来初始化一个新对象(复制)以值方式返回局部对象(作为函数返回值,复制)深拷贝:在堆区重新申请空间,进行拷贝操作。浅拷贝:简单的赋值操作。拷贝构造函数调用时机。拷贝构造函数调用时机。
2023-01-28 10:52:01
101
原创 构造析构函数
对象的初始化和清理是两个非常重要的安全问题,一个对象或者变量没有初始状态,对其使用后果未知,同样的,使用完一个对象或变量,没有及时清理,也会造成一定的安全问题C++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要求我们做的事情,因此如果我们不提供构造和析构,编译器会提供。构造函数:主要用于在创建对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。析构函数:主要作用于对象销毁前系统自动调用,执行一些清理工作。
2023-01-28 10:06:09
437
原创 函数和运算符的重载
在C语言中函数默认都是全局的,使用关键字static可以将函数声明为静态,函数定义为static就意味着这个函数只能在定义这个函数的文件中使用,在其他文件中不能调用,即使在其他文件中声明这个函数都没用。内部函数如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一源程序其他文件中的函数调用,这种函数称为内部函数。内部函数的首部可写为:static 类型说明符 函数名(形参表)内部函数也称为静态函数。
2023-01-27 17:41:55
135
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人