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

学习数据结构与算法分析过程中的一些笔记与思考
摘要:1、三重循环暴力求解 例程: int MaxSubsequenceSum(const int A[], int N) { int ThisSum, MaxSum, i, j, k; MaxSum = 0; for(int i = 0; i < N; i++) for(int j = i; j < N 阅读全文
posted @ 2020-09-22 15:14 模糊计算士 阅读(850) 评论(0) 推荐(0)
摘要:1、Big O 需要定义算法的时间复杂度 不必非常精确 通常只需要了解其上界,相对简单 定义 \(f(n) = O(g(n)), \ if \ \exists \ c > 0:c * g(n) \geq f(n)\) \(f(n) = \Omega (g(n)), \ if \ \exists \ 阅读全文
posted @ 2020-09-20 15:57 模糊计算士 阅读(1569) 评论(0) 推荐(0)
摘要:复杂度 名称 例子 O(1) 常数 A[0], A[10000], 2 + 3, 2 * 3 O(\(\log N\)) 对数 折半查找 O(N) 线性 文件下载、无序查找 O(\(N^2\)) 二次型 插入排序 O(\(N^k\)) 多项式 矩阵乘法 O($2^n$) 指数 三色图、蛋白质折叠 O 阅读全文
posted @ 2020-09-20 01:35 模糊计算士 阅读(353) 评论(0) 推荐(0)
摘要:queue.h typedef int ElementType; /* START: fig3_57.txt */ #ifndef _Queue_h #define _Queue_h struct QueueRecord; typedef struct QueueRecord *Queue; int 阅读全文
posted @ 2020-09-20 00:56 模糊计算士 阅读(310) 评论(0) 推荐(0)
摘要:stackar.h typedef int ElementType; /* START: fig3_45.txt */ #ifndef _Stack_h #define _Stack_h struct StackRecord; typedef struct StackRecord *Stack; i 阅读全文
posted @ 2020-09-19 23:43 模糊计算士 阅读(282) 评论(0) 推荐(0)
摘要:stackli.h typedef int ElementType; /* START: fig3_39.txt */ #ifndef _Stack_h #define _Stack_h struct Node; typedef struct Node *PtrToNode; typedef Ptr 阅读全文
posted @ 2020-09-19 23:12 模糊计算士 阅读(269) 评论(0) 推荐(0)
摘要:见教材P42 cursor.h typedef int ElementType; #define SpaceSize 100 /* START: fig3_28.txt */ // 链表游标实现的声明 #ifndef _Cursor_H #define _Cursor_H typedef int P 阅读全文
posted @ 2020-09-17 18:51 模糊计算士 阅读(207) 评论(0) 推荐(0)
摘要:特征值分解 \(x^2 - x - 1 = 0\) 移项,除以x,求x的非零解 \(x = 1 + \frac{1}{x}, x = 1 + \frac{1}{1 + \frac{1}{1 + ...}}\) 迭代 \(x_{n + 1} = 1 + \frac{1}{x_n}\) \(x_0 = 阅读全文
posted @ 2020-09-16 13:07 模糊计算士 阅读(281) 评论(0) 推荐(0)
摘要:数列描述: \(F_0 = 0, F_1 = 1, F_n = F_{n - 1} + F_{n - 2}\) 图形表示: 递归实现 int fib(int n) { if (1 == n || 2 == n) return 1; return fib(n - 1) + fib(n - 2); } 阅读全文
posted @ 2020-09-15 23:22 模糊计算士 阅读(424) 评论(0) 推荐(0)
摘要:求证:欧几里得算法(也叫辗转相除法),即: gcd(a, b) = gcd(b, a mod b) 证明: 前提公式: \(\left . \begin{array}{lcr} a = md \\ b = \ nd \\ m、n互质 \end{array} \right\} \Leftrightar 阅读全文
posted @ 2020-09-13 17:21 模糊计算士 阅读(1511) 评论(0) 推荐(0)
摘要:fatal.h #include <stdio.h> #include <stdlib.h> #define Error( Str ) FatalError( Str ) #define FatalError( Str ) fprintf( stderr, "%s\n", Str ), exit( 阅读全文
posted @ 2020-09-13 14:30 模糊计算士 阅读(528) 评论(0) 推荐(0)
摘要:因为在网上很多地方找都没有找到合适的,有的要收费,有的是伪装的垃圾软件下载,所以就到github上再找,结果还真的找到了,所以分享出来,希望大家少走弯路。 百度网盘链接: 链接:https://pan.baidu.com/s/18ClB3pxHxe8evr7OwLjAEQ 提取码:poob 文件预览 阅读全文
posted @ 2020-09-13 13:24 模糊计算士 阅读(1844) 评论(0) 推荐(0)
摘要:以下是完整实现(配合教材使用更佳,教材见文章的标签): list.h typedef int ElementType; /* START: fig3_6.txt */ #ifndef _List_H #define _List_H struct Node; // 使用结构体构造了节点 typedef 阅读全文
posted @ 2020-09-13 01:13 模糊计算士 阅读(305) 评论(0) 推荐(0)
摘要:C语言代码: int MaxSubsequenceSum(const int A[], int N) { int ThisSum, MaxSum, j; ThisSum = MaxSum = 0; for (j = 0; j < N; j++) { ThisSum += A[j]; if (This 阅读全文
posted @ 2020-09-11 23:02 模糊计算士 阅读(711) 评论(0) 推荐(0)
摘要:问题: 即,证明:$12 + 22 + 32 + ... + n2 = \frac{n(n + 1)(2n + 1)}{6}$ 下面就用踢三角方法来证明: 首先,左面的式子可以写成下面三角形中所有数的总和: 然后,把这个三角形踢一脚,就变成了: 然后,再踢一脚: 此时,把三块石板放在一起: 我们把三 阅读全文
posted @ 2020-09-10 13:57 模糊计算士 阅读(2235) 评论(0) 推荐(0)
摘要:方法:反证法 假设 \(\sqrt{2}\) 是有理数,则 \(\exists p, q \in I\),使 \(\sqrt{2} = \frac{p}{q}\) 取一对互质的$p, q, p2 = 2q2, p$是偶数 由于$q2 = \frac{p2}{2}, q$也是偶数,继而推出矛盾 注:1 阅读全文
posted @ 2020-09-10 13:05 模糊计算士 阅读(635) 评论(0) 推荐(0)
摘要:问题:n刀最多把pizza切成几块? 分析:其实还是递推思想,比如两刀可以切成4块,那么下一刀,也就是第三刀,肯定是要和前两刀的每一刀线都要相交,这样才能保证切成足够多的块数,这样一来,就会多出 4 个交点(包括与圆的边界的焦点),也就会多出 3 个小块,原因时是每相邻的两个点就会确定一个多出的小块 阅读全文
posted @ 2020-09-10 12:48 模糊计算士 阅读(1009) 评论(0) 推荐(0)
摘要:和三个柱子的最初的汉诺塔很类似,只是多了一个柱子,相当于缓存区大了一些,处理的速度自然快了一些。 粗略的C代码(并没有使先移动到第四根柱子上面的圆盘的数量是最优): #include <stdio.h> int count = 0; void hanoi (char s, char t1, char 阅读全文
posted @ 2020-09-10 12:45 模糊计算士 阅读(1621) 评论(0) 推荐(0)
摘要:简略说明:中间的小正方形的面积:\((b - a)^2\),而四个三角形的面积为$4\times\frac{1}{2}ab=2ab$,所以,\((b-a)^2 + 2ab = c^2\),即:\(a^2 + b^2 = c^2\) 阅读全文
posted @ 2020-09-09 17:25 模糊计算士 阅读(9922) 评论(0) 推荐(0)
摘要:简略说明:右上角的那个正方形的对角线沿着这个正方形的左上角的边往下拉,看绿色的虚线,这样就构造了一个面积是该正方形的一半的三角形,然后绕着最大的正方形的右上角的顶点逆时针旋转90°,得到蓝边三角形,然后将这个三角形的左上角的顶点拉到它投射在下面的正方形的边上的点,这样,就构造了黄边的三角形,同样地, 阅读全文
posted @ 2020-09-09 16:44 模糊计算士 阅读(328) 评论(0) 推荐(0)