
算法知识
文章平均质量分 81
一只IT小小鸟
还有很多未完成的梦,怎能停下脚步,加油!
展开
-
七种常见经典排序算法分析与实现--C++
七种常见经典排序算法分析与实现--C++ 排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中。排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向。排序算法有:直接插入 希尔 冒泡 快速 选择 堆排序 归并 1. 插入排序—直接插入排序(Straight Insertion S...原创 2018-03-05 16:03:44 · 517 阅读 · 0 评论 -
动态规划--简单递推
动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。*************************************************************************************************************动态规划(英语:Dynamic programmin...原创 2018-03-24 14:24:27 · 1049 阅读 · 0 评论 -
动态规划--背包
背包分类:0-1背包、完全背包、分组背包、多重背包。 01背包(ZeroOnePack):有N件物品和一个容量为V的背包。每种物品均只有一件。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。完全背包(CompletePack):有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可...原创 2018-03-24 17:21:42 · 270 阅读 · 0 评论 -
动态规划--最长递增子序列(LIS)-最长公共子序列(LCS)
动态规划--最长递增子序列(LIS)-最长公共子序列(LCS)LIS最长递增子序列,朴素的是o(n^2)算法,二分下可以写成o(nlgn):维护一个当前最优的递增序列——找到恰好大于它更新LCS最长公共子序列,通常o(n^2)的算法************************************************************************************...原创 2018-03-24 22:03:51 · 516 阅读 · 0 评论 -
动态规划--区间DP
动态规划--区间DP所谓区间dp,顾名思义就是在一段区间上的动态规划。它既要满足dp问题的最优子结构和无后效性外,还应该符合在区间上操作的特点。我的理解是往往会对区间进行合并操作。亦或是单个元素(可看成一个小区间)跨区间进行操作。例如括号匹配问题,石子合并问题(通过多次的相邻合并,最后实质上会产生跨区间的合并,如果你把其中的石子看作参考系的话就很容易感觉出来),还有在整数中插入运算符号的问题(利用...原创 2018-03-25 16:16:50 · 731 阅读 · 0 评论 -
动态规划--树形DP
动态规划--树形DP 1、什么是树型动态规划 顾名思义,树型动态规划就是在“树”的数据结构上的动态规划,平时作的动态规划都是线性的或者是建立在图上的,线性的动态规划有二种方向既向前和向后,相应的线性的动态规划有二种方法既顺推与逆推,而树型动态规划是建立在树上的,所以也相应的有二个方向: 1、叶->根:在回溯的时候从叶子节点往上更新信息 2、根 - >叶:往往是在从叶往根d...原创 2018-03-26 22:50:32 · 2863 阅读 · 0 评论 -
进程调度-作业调度: 先来先服务--短作业优先--响应比高算法
进程调度-作业调度: 先来先服务--短作业优先--响应比高算法1.调度的概念1. 调度的基本概念在多道程序系统中,进程的数量往往多于处理机的个数,进程争用处理机的情况就在所难免。处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、髙效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。 处理机调度是多道程序操作系统的基础,它是操作系统设计的核心问题。 2. 调度的层次一个...原创 2018-03-10 18:26:05 · 22937 阅读 · 10 评论 -
卡特兰数
什么是Catalan数?说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是 我们从中取出的C_n就叫做第n个Catalan数,前几个Catalan数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 353576...翻译 2016-11-01 12:44:59 · 661 阅读 · 0 评论 -
方程求根:二分法--不动点迭代--牛顿法--弦截法
方程求根:二分法--不动点迭代--牛顿法--弦截法1.问题概述 许多复杂的求解问题,都可以转换成方程f(x)=0的求解问题。这一系列的解叫做方程的根。对于非线性方程的求解,在自变量范围内往往有多个解,我们将此变化区域分为多个小的子区间,对每个区间进行分别求解。我们在求解过程中,选取一个近似值或者近似区间,然后运用迭代方法逐步逼近真实解。2.理论与方法1.二分法(Bisection Metho...原创 2018-03-09 11:41:54 · 18367 阅读 · 0 评论 -
求解线性方程组: 高斯消元--LU分解--Jacobi迭代--高斯赛德尔--sor超松弛迭代
求解线性方程组: 高斯消元--LU分解--Jacobi迭代--高斯赛德尔--sor超松弛迭代1.问题概述假定线性方程组 是一个最基本的计算模型,它在科学与工程计算中扮演着极其重要的角色。在解决此线性方程组时,我们首先想到的是线性代数课程中的求解方法,然而对于计算机来说,这是很难实现的,所以我们应当对此方法进行变形拓展。随着未知数个数的增加,求解就会变得越来越困难,当n很大时,用手工计算已经...原创 2018-03-09 19:02:41 · 4628 阅读 · 0 评论 -
数据拟合: 直线拟合--多项式拟合
数据拟合: 直线拟合--多项式拟合1.问题概述在实际问题中,常常需要从一组观察数据 (xi,yi) i=1,2,,..,n去预测函数 y=f(x) 的表达式,从几何角度来说,这个问题就是要由给定的一组数据点(xi,yi)去描绘曲线 y=f(x) 的近似图像。插值方法是处理这类问题的一种数值方法。不过,由于插值曲线要求严格通过所给的每一个数据点,这种限制会保留所给数据的误差。如果个别数...原创 2018-03-09 20:13:11 · 21434 阅读 · 0 评论 -
插值方法: 拉格朗日插值--逐步插值的自适应算法
插值方法: 拉格朗日插值--逐步插值的自适应算法1.问题描述所谓插值,就是设法利用已给数据表求出给定点x的函数值y.表中的数据点称为插值节点,所要插值的点x称插值点。插值计算的目的在于,通过尽可能简便的方法,利用所给数据表加工出插值点x上具有足够精度的插值结果y.在这种意义,插值过程是个数据加工的过程。2.理论与方法Largrange 插值,回顾我们之前的多项式插值多项式的系数与所给的数据点并没有...原创 2018-03-09 20:54:36 · 5636 阅读 · 1 评论 -
数值积分: 梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式
数值积分:梯形规则--复合梯形规则--辛普森规则--复合辛普森规则--龙贝格求积公式1.问题描述微积分方法求积有很大的局限性,当碰到被积函数很复杂时,找不到相应的原函数。积分值在几何上可解释为由 x=a,x=b,y=0和y=f(x) 所围成的曲边梯形的面积。积分计算之所以有困难,就是因为这个曲边梯形有一条边y=f(x)是曲线。2.理论与方法依据积分中值定理,底为b-a,而高为f(e)的矩形面积恰等...原创 2018-03-09 21:48:49 · 26677 阅读 · 4 评论 -
动态分区存储管理: 首次适应--最佳适应-最坏适应算法
动态分区存储管理: 首次适应--最佳适应-最坏适应算法1.背景多个应用程序请求主存空间是一个多对多的问题,在分区存储分配方法中由多个空闲区组成了空闲队列。对一个要进入主存的应用程序而言,主存分配程序在多个空闲区中选择那一个给该应用程序这就是一个放置 策略问题。2.理论分析空闲区队列的排序原则就体现了选择一个空闲区的策略。这个队列可以是无序的,即按照主存块释放的先后顺序排列。也可以按照某种分类方法进...原创 2018-03-10 15:24:53 · 29278 阅读 · 11 评论 -
页式存储管理: 最佳置换(OPT)--先进先出页面置换(FIFO)--最久未使用置换(LRU)
页式存储管理: 最佳置换--先进先出页面置换--最久未使用置换1.背景进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区。选择调出页面的算法就称为页面置换算法。好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出。2.置换策略理论1. 最佳置换算法(OPT)最佳(Optim...原创 2018-03-10 16:27:20 · 22222 阅读 · 3 评论 -
避免死锁: 银行家算法
避免死锁: 银行家算法1.背景在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。2.死锁概念死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼...原创 2018-03-10 17:32:18 · 24219 阅读 · 3 评论 -
二叉树遍历:递归--非递归(前序、中序、后序)
二叉树遍历:递归–非递归(前序、中序、后序)【写在前面】 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就 是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历 中,前序和中序遍历的非递归算法都很容易实现...原创 2018-04-18 15:24:29 · 233 阅读 · 0 评论