随笔分类 -  算法

摘要:时间复杂度 时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。 复杂度被分为两种级别:一种是O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;另一种是O(a^n)和O(n!)型复杂度,它 阅读全文
posted @ 2021-07-29 14:37 cxc1357 阅读(193) 评论(0) 推荐(0)
摘要:贝叶斯公式: 虚位移定理求超静定结构位移: 外力虚功 = 力1 x 位移1 = 力2 x 位移2 = 变形虚功 两个状态量的组合,具有一致的不严格性 参考: https://blog.csdn.net/qq_23947237/article/details/78265026 阅读全文
posted @ 2021-07-27 09:57 cxc1357 阅读(204) 评论(0) 推荐(0)
摘要:高斯消元法可用于求解n元1次方程组 伪代码: def gauss(): for i = 1 to n-1: for j = i+1 to n: c = -a[j][i]/a[i][i] for k = 1 to n: a[j][k] += a[i][k]*c b[j]+=b[i]*c x[n]=b[ 阅读全文
posted @ 2021-07-27 09:53 cxc1357 阅读(1806) 评论(0) 推荐(0)
摘要:冒泡排序 思路:依次比较相邻两个元素的大小,不满足大小关系则交换,每次循环都将最大的数置于数组末尾 实现:双循环,单指针;若一个循环中没有发生交换,提前退出 伪码: n = len(a) for i = 1 to n-1 for j = 0 to n-i-1 if a[j]>a[j+1] swap( 阅读全文
posted @ 2021-07-27 09:53 cxc1357 阅读(68) 评论(0) 推荐(0)
摘要:分为3个函数实现: sort():主排序函数 _sort():分治函数,将排序数组不断分解为子数组进行排序 _merge():归并函数,将两个有序数组合并成一个大的有序数组 1 def sort(a): 2 n = len(a) 3 aux = [0]*n 4 return _sort(a,0,n, 阅读全文
posted @ 2021-07-27 09:52 cxc1357 阅读(165) 评论(0) 推荐(0)
摘要:分钱问题 100个人,初始每人100块钱,每轮每人将1元随机分给另一个人,若干轮过后,100个人的财富分布情况会怎样 画布的原点在左上角,y轴向下 AlgoVisHelper.java 1 import java.awt.EventQueue; 2 import java.util.Arrays; 阅读全文
posted @ 2020-05-08 23:23 cxc1357 阅读(302) 评论(0) 推荐(0)
摘要:引入 以求解斐波那契数列为例,如何避免递归中的重复计算 记忆化搜索(指数->线性,对于n=40,性能提升100万倍) 1 #include <iostream> 2 #include <ctime> 3 #include <vector> 4 using namespace std; 5 6 vec 阅读全文
posted @ 2020-04-17 07:33 cxc1357 阅读(125) 评论(0) 推荐(0)
摘要:思路 如何在有序数组中快速查找某元素 首先看中间元素v和想要查找元素的关系 若小于v,就在v的左侧查找;大于v,就在v的右侧查找;等于v,不再查找 1 template<typename T> 2 int binarySearch(T arr[], int n, T target){ 3 int l 阅读全文
posted @ 2020-03-05 16:05 cxc1357 阅读(112) 评论(0) 推荐(0)
摘要:最小生成树(Minimum Span Tree):对于带权无向连通图。所有节点都连通且总权值最小。应用:电缆布线、网络、电路设计 找V-1条边,连接V个顶点,总权值最小 切分定理(Cut Property):给定任意切分,横切边中权值最小的边必属于最小生成树 切分:把图中节点分为两部分 横切边:边的 阅读全文
posted @ 2020-02-05 15:37 cxc1357 阅读(1719) 评论(0) 推荐(0)
摘要:应用:交通运输、社交网络、互联网、工作安排、程序状态执行 分类:无向图、有向图;无权图,有权图 简单图:没有自环边、平行边 表示方式:邻接表(适合稀疏图)、邻接矩阵(适合稠密图) 遍历临边:邻接表直接得到,邻接矩阵O(v),v为顶点个数 main.cpp 1 #include <iostream> 阅读全文
posted @ 2020-02-02 14:00 cxc1357 阅读(169) 评论(0) 推荐(1)
摘要:引入 连接问题:一个结点和另一个结点是否相连 网络中节点间的连接状态 微信中任意两个人是否通过好友认识 路径问题:一个结点到另一个结点的路径 集合问题:经常使用并集,需要查询元素是否是一类 操作 union(p,q):连接两个元素(放入一个组中) find(p):p在哪个组中 isConnected 阅读全文
posted @ 2020-01-31 18:06 cxc1357 阅读(145) 评论(0) 推荐(0)
摘要:导数 导数是一个数,函数y(x)在x0点的导数y'(x0)反应了在x0处y随x的变化快慢 微分 微分指函数值的微小变化 在x0可微:在x0点y和x的微分成线性关系(只与该点函数值有关) 导数可看做函数的微分与自变量的微分之商,故导数又称微商 偏导数 函数在一点处沿坐标轴的变化率 方向导数 函数在一点 阅读全文
posted @ 2020-01-29 20:07 cxc1357 阅读(291) 评论(0) 推荐(0)
摘要:普通队列:先入先出 优先队列:依照元素优先级的大小取出数据 现实世界中,许多情况是可以插队的(根据权重) 应用: 游戏中AI优先攻击哪个敌人(根据经验高低、血多少等) 操作系统处理应用 在第N个元素中选出前M个元素 使用排序可在O(NlogN)内解决 使用优先队列可在O(NlogM)内解决(N和M相 阅读全文
posted @ 2020-01-29 19:27 cxc1357 阅读(152) 评论(0) 推荐(0)
摘要:思路 对于有序数列,利用二分查找法(只能查找,静态) 对于字典,利用二分搜索树 利用二分搜索树构建查找表,可高效地完成查找、插入、删除操作(动态维护数据) 回答数据关系问题:min、max、floor、ceil、rank 查找 插入 删除 普通数组 O(n) O(n) O(n) 顺序数组 O(log 阅读全文
posted @ 2020-01-29 16:36 cxc1357 阅读(608) 评论(0) 推荐(1)
摘要:索引堆 普通堆的问题 Heapify的过程中改变了原数组元素的位置,性能消耗较高 原有元素改变位置后难以被索引找到(如原数组中保存着系统任务,Heapify后想提高原来id=6任务的优先级) 索引堆的引入 数据和索引分开表示 建堆过程:比较数据,交换索引,效率高 便于堆中数据的操作,如将进程号为7的 阅读全文
posted @ 2020-01-21 00:00 cxc1357 阅读(199) 评论(0) 推荐(0)
摘要:思路 不用传统排序算法,如何从小到大排序一个数组? 把原数组的元素放到最大堆中,不断取出根节点,从后往前赋值到原数组 堆的实现 完全二叉树:二叉树,除了最后一层外,其他层的节点数都是最大值,最后一层所有的节点都在左侧 堆:是一个完全二叉树,任何一个节点都不大于它的父节点的堆是最大堆 堆的存储 利用数 阅读全文
posted @ 2020-01-19 00:35 cxc1357 阅读(179) 评论(0) 推荐(0)
摘要:思路 先将原数组不断二分成两个部分 再把排好序的两部分向上合并为一个新的有序数组,最终的数组就是有序的 这里隐含着一个数学归纳法的证明 二分至最终两个数组只有一个元素时,它们本身就是有序的 从i-1层向上合并到 i 层,i 层是有序的 所以最终得到的数组是有序的 实现 mergeSort():供用户 阅读全文
posted @ 2020-01-04 15:45 cxc1357 阅读(471) 评论(0) 推荐(0)
摘要:思路 从数组中选择一个元素(如第一个元素),把它放到正确的位置上 对它前后两部分的数组不断重复这个过程,最终得到的数组就是有序的 实现 创建三个指针,l 指向第一个元素v,i 指向当前元素e,j 指向 <v 和 >v 的分界点 i 遍历到最后,交换 l 和 j ,整个数组分成 <v 和 >v 两部分 阅读全文
posted @ 2020-01-04 15:09 cxc1357 阅读(384) 评论(0) 推荐(0)
摘要:选择排序、插入排序、归并排序 main.cpp 1 #include <iostream> 2 #include "Student.h" 3 #include "SortTestHelper.h" 4 5 using namespace std; 6 7 template<typename T> 8 阅读全文
posted @ 2019-12-26 21:38 cxc1357 阅读(722) 评论(0) 推荐(0)
摘要:选择、插入排序 main.cpp 1 #include <iostream> 3 #include "SortTestHelper.h" 4 5 using namespace std; 6 7 template<typename T> 8 void selectionSort(T arr[],in 阅读全文
posted @ 2019-12-25 23:34 cxc1357 阅读(276) 评论(0) 推荐(0)