![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 92
永生辉皇
这个作者很懒,什么都没留下…
展开
-
二叉树词典
否则,如果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 · 162 阅读 · 0 评论 -
程序的运行时间
我们现在要给出某个函数是另一个函数的“大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 · 1010 阅读 · 0 评论 -
归并排序算法
现在要考虑一种名为归并排序的与选择排序有着天壤之别的排序算法。递归的方式能最好地描述归并排序,而归并排序展示了分治法的强大,在这种排序方法中,我们通过将问题“分为”大小减半的两个相似问题来为表(a1,a2,a3,…,an),从原则上讲,可以首先将原表分为两个元素任选的大小相等的表,不过在我们开发的程序中,将会将其分为一个含有奇数编号元素的表(a1,a3,a5,…),以及一个含有偶数编号元素的表(a2,a4,a6…),接着单独为大小减半的两个表排序。原创 2023-02-07 22:21:50 · 83 阅读 · 0 评论 -
树的数据类型
在很多情况下,信息会具有家谱或组织图中那样的分层结构或嵌套结构。为分层结构建模的抽象被称为树,而且这种数据结构是计算机科学领域中最为基础的内容之一。它是包括Lisp在内的数种程序设计语言的底层模型。原创 2023-02-07 20:37:13 · 281 阅读 · 0 评论 -
归纳和递归
在递归定义(或归纳定义)中,我们用一类或多类紧密相关的对象或事实本身来对它们进行定义。这种定义一定不能是无意义的,比如“某个部件是某个有某种颜色的部件”,也不能是似是而非的,比如“当且仅当某事物不是glotz时它才是glotz”。归纳定义涉及:(1) 一条或多条依据规则,在这些规则中,要定义一些简单的对象;(2) 一条或多条归纳规则,利用这些规则,通过集合中较小的对象来定义较大的对象。例如,我们可以通过迭代算法定义了阶乘函数:将1X2X…Xn相乘得到n!。其实,还可以按照以下方式递归地定义n!的值。原创 2023-02-06 20:23:29 · 302 阅读 · 0 评论 -
迭代和归纳
(1) 迭代技术。反复执行一系列操作的最简单方法就是使用迭代结构,比如C语言中的for语句。(2) 递归程序设计。C语言及其他众多语言都允许函数递归,即函数可以直接或间接地调用自己。对新手程序员来说,编写迭代程序通常比写递归程序更安全。递归程序更易于编写、分析和理解。(3) 归纳证明。“归纳证明”是用来表明命题为真的一项重要技术。(4)归纳定义。原创 2023-02-04 20:43:29 · 194 阅读 · 0 评论 -
数据模型介绍
数据模型介绍原创 2023-02-01 14:36:20 · 563 阅读 · 0 评论