随笔分类 -  数据结构与算法分析(课堂笔记)

学习数据结构与算法分析过程中的一些笔记与思考
摘要:1、实验描述 用C语言编程实现求整数平方和、铺地板和Hanoi塔等问题的求解在程序中加入clock ()来计算求解时间使用不同的输入值得到对应的时间分析算法的时间复杂度并与测量结果进行比较如果存在差异,解释原因。 2、实验设计 2.1、 求整数平方和问题 利用迭代来计算从 1 到 n 之间的整数平方 阅读全文
posted @ 2020-10-23 22:35 模糊计算士 阅读(445) 评论(0) 推荐(0)
摘要:完整的文件见另一篇博客 https://www.cnblogs.com/fanlumaster/p/13839645.html Polynomial PolyMult(Polynomial P1, Polynomial P2) { Polynomial P, Rear, t1, t2, t; int 阅读全文
posted @ 2020-10-19 13:05 模糊计算士 阅读(224) 评论(0) 推荐(0)
摘要:poly.h #ifndef POLYNOMIALCOMPUTE_POLY_H #define POLYNOMIALCOMPUTE_POLY_H struct PolyNode; typedef struct PolyNode *Polynomial; void Attach(int c, int 阅读全文
posted @ 2020-10-19 13:01 模糊计算士 阅读(279) 评论(0) 推荐(0)
摘要:poly.h #ifndef POLYNOMIALCOMPUTE_POLY_H #define POLYNOMIALCOMPUTE_POLY_H struct PolyNode; typedef struct PolyNode *Polynomial; void Attach(int c, int 阅读全文
posted @ 2020-10-19 09:42 模糊计算士 阅读(274) 评论(0) 推荐(0)
摘要:因为原书中的队列中存储的是 int 类型的数据,而我们层序遍历用到的队列中应该存储树的节点,所以稍微改了一下队列的结构,使其存储的 ElementType 为树的节点。 期间,出了一点小 Bug,本来的队列的源码兼容性是很强的,之所以用 ElementType 也是为了将来可以随意将队列改装成可以存 阅读全文
posted @ 2020-10-18 02:10 模糊计算士 阅读(256) 评论(0) 推荐(0)
摘要:tree.h typedef int ElementType; /* START: fig4_16.txt */ #ifndef _Tree_H #define _Tree_H struct TreeNode; // 定义结构体节点 typedef struct TreeNode *Position 阅读全文
posted @ 2020-10-18 02:07 模糊计算士 阅读(200) 评论(0) 推荐(0)
摘要:1、先序遍历 void PreOrderTraversal(SearchTree T) { if (T) { printf("%d ", T->Element); PreOrderTraversal(T->Left); PreOrderTraversal(T->Right); } } 2、中序遍历 阅读全文
posted @ 2020-10-18 01:03 模糊计算士 阅读(366) 评论(0) 推荐(0)
摘要:AVL 平衡树的完全代码见 https://www.cnblogs.com/fanlumaster/p/13824006.html 首先我们明确一个定义:平衡因子:树的一个节点的左、右子树的高度差称为该节点的平衡因子。一棵 AVL 树的平衡因子只能有 0、-1、1 三种取值。 单旋转 LL 情况下的 阅读全文
posted @ 2020-10-17 01:38 模糊计算士 阅读(386) 评论(0) 推荐(0)
摘要:avltree.h typedef int ElementType; /* START: fig4_35.txt */ #ifndef _AvlTree_H #define _AvlTree_H struct AvlNode; typedef struct AvlNode *Position; ty 阅读全文
posted @ 2020-10-16 00:59 模糊计算士 阅读(158) 评论(0) 推荐(0)
摘要:tree.h typedef int ElementType; /* START: fig4_16.txt */ #ifndef _Tree_H #define _Tree_H struct TreeNode; // 定义结构体节点 typedef struct TreeNode *Position 阅读全文
posted @ 2020-10-15 17:01 模糊计算士 阅读(150) 评论(0) 推荐(0)
摘要:问题描述 这里是数据结构课堂上的描述: N people form a circle, eliminate a person every k people, who is the final survior? Label each person with 0, 1, 2, ..., n - 1, d 阅读全文
posted @ 2020-10-15 14:15 模糊计算士 阅读(806) 评论(0) 推荐(0)
摘要:如图,一个曲线方程 \(f(x)\),在它的 \(f(x_n)\) 处画一条切线与 \(x\) 轴相交,交点为 \(x_{n+1}\),如果继续在它的 \(f(x_{n+1})\) 处画一条切线与 \(x\) 轴相交,会得到交点 \(x_{n+2}\)。然后重复这个过程,可以发现交点 \(x_{n+ 阅读全文
posted @ 2020-10-12 21:16 模糊计算士 阅读(1108) 评论(0) 推荐(0)
摘要:P78页递归关系: 原文说了,第7章会求解这个递归关系,所以在第184-185页找到了相关证明: 阅读全文
posted @ 2020-10-04 00:55 模糊计算士 阅读(146) 评论(0) 推荐(0)
摘要:1、问题与分析 问题: 如何使用较少的乘法次数求 \(x^{27}\)? 方法:缓存中间结果,避免重复计算 过程演示: \(x^3 = x * x * x, \ x^9 = x^3 * x^3 * x^3, \ x^{27} = x^9 * x^9 * x^9\) \(x^2 = x * x, \ 阅读全文
posted @ 2020-10-03 17:55 模糊计算士 阅读(498) 评论(0) 推荐(0)
摘要:C语言代码: // 筛选出小于等于n的质数 for (i = 2; i * i <= n; i++) { if (a[i] == -1) continue; for (k = i; k * i < n; k++) { if (a[k * i] == -1) continue; a[k * i] = 阅读全文
posted @ 2020-10-01 00:01 模糊计算士 阅读(306) 评论(0) 推荐(0)
摘要:方法: 利用快慢指针,慢指针的步长设置为1,快指针的步长设置为2,这样的话,在快指针到达链表尽头的同时,慢指针也刚好到达链表的中点位置。 阅读全文
posted @ 2020-09-30 21:29 模糊计算士 阅读(291) 评论(0) 推荐(0)
摘要:问题: 给定一个长度为n的整形数组,元素均大于0;以其中任意两个作为隔板,且位置不变;如何使水的容积最大?设计算法,说明时间、空间复杂度。 代码: int water(int a[], int n) { int m = 0, tmp; // m 存储最大值,作为最后的结果 int i = 0, j 阅读全文
posted @ 2020-09-30 21:24 模糊计算士 阅读(237) 评论(0) 推荐(0)
摘要:这一节讲解的是二叉查找树,书中这一页有一个地方让我比较疑惑,原文是: “如果向一棵预先排序的树输入数据,那么一连串Insert操作将花费二次时间,而链表实现的代价会非常巨大,因为此时的树将只由那些没有左儿子的节点组成。” 这里为什么是花费二次时间,这就是我的疑惑点,然后在知乎找到了答案。该回答简单理 阅读全文
posted @ 2020-09-30 18:59 模糊计算士 阅读(163) 评论(0) 推荐(0)
摘要:简单的迭代法: int sqrt(int N) { for (int i = 1; i <= N / 2; i++) { if(i * i == N ) { return i; } if (i * i < N && (i + 1) * (i + 1) > N) { return i; } } } 折 阅读全文
posted @ 2020-09-29 11:46 模糊计算士 阅读(801) 评论(0) 推荐(0)
摘要:课本上只给了队列的数组实现,关于链表实现的留做了作业,现实现如下: queueli.h typedef int ElementType; /* START: fig3_57.txt */ #ifndef _Queueli_h #define _Queueli_h struct Node; struc 阅读全文
posted @ 2020-09-24 01:25 模糊计算士 阅读(218) 评论(0) 推荐(0)