摘要: 一、概念 1.斐波那契堆 斐波那契堆是可合并堆 在不涉及删除的操作(除去EXTRACT和DELETE)中,操作仅需O(1)的平摊运行时间 当EXTRACT和DELETE的操作数目较小时斐波那契堆能得到较好的运行效率。 斐波那契堆不能有效地支持SEARCH操作 用于解决诸如最小生成树和寻找单源最短路径等问题的快速算法都要用到斐波那契堆。 2.斐波那契堆的结构 斐波那契堆由一组最小堆构... 阅读全文
posted @ 2014-10-26 08:55 windmissing 阅读(893) 评论(0) 推荐(0) 编辑
摘要: 一、题目 二、思考 最小Young氏矩阵和最小堆的思想差不多,可以通过比较两者的同异来理解Young氏矩阵 不同点: min-Heap min-Young 堆顶(最小值) H[1] Y[i][j] 最后一个元素的位置 H[... 阅读全文
posted @ 2014-10-17 21:00 windmissing 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 一、本文主要内容 1.制作一个可执行文件,用于测试 (1)在一个新的文件loader.S中写一段测试代码,及相应的.ld文件 (2)修改makefile,使loader.S编译成loader.bin (3)把loader.bin拷贝到boot.img上 2.加载测试文件 对上一篇文件的代码稍做修改,使得能搜索并加载指定文件《loader.bin》到内存指定位置 3.控制权转移到内存指... 阅读全文
posted @ 2014-06-30 20:23 windmissing 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 注:本文仍然主要来自《writeos-1.0-2-weekly》 一、加载指定扇区支指定空间 《运行自己的操作系统(linux版) -0.01》提到读入启动扇区,那是由硬盘自动完成的。 若要读入其它扇区到一个特定的内存空间,就要自己写代码完成,使用底层BIOS系统提供的BIOS 13h号中断,如图: (1)读入一个扇区需要用到的参数,假设扇区号已知,需要用的参数及获取方法如下: ... 阅读全文
posted @ 2014-06-26 22:37 windmissing 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 大部分内容来自WB. YANG的一本书,书名忘记了 1.linux所需要的安装的工具 vim, virtualbox,g++ 2.编写自己的操作系统,懒得在linux上装个输入法,只好用蹩脚的英文写的注释,阅读时请自带避雷针 系统引导程序:boot.S 1 .code16 #使用16位模式汇编 2 .text ... 阅读全文
posted @ 2014-06-14 23:21 windmissing 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 一、题目 设X[1..n]和Y[1..n]为两个数组,每个都包含n个已排好序的数,给出一个求数组X和数组Y中所有2n个元素的中位数的O(lgn)时间的算法 二、思路 递归求解该问题,解题规模不断减半,最后剩下4个元素时,得到问题的解, 本文求的是下中位数,下中位数的特点是: (1)当n为奇数,令n = 2 * m + 1,下中位数是第m+1小的数,数组中有m个数小于下中位数,有m个数大于... 阅读全文
posted @ 2014-06-14 23:18 windmissing 阅读(1966) 评论(0) 推荐(0) 编辑
摘要: 说明:本文中的内容,主要来自于WB. YANG的一本书,书名《writeos-1.0-2-weekly》,建议看原文,提供链接http://download.csdn.net/detail/mishifangxiangdefeng/5869801一、 为什么要引入文件系统突破启动扇区512字节的限制... 阅读全文
posted @ 2014-06-14 20:49 windmissing 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 一、综述 1.定义 定义1:流网络 定义2:残留容量 定义3:增广路径 已知一个网络流G=(V,E)和流f,增广路径p为残留网络G|f中从s到t的一条简单路径 能够沿一条增广路径p的每条边传输的网络流的最大量为p的残留容量,由下式定义: c|f(p) = min{c|f(u,v) : (u,v)在p上} 定义4:割、净流、容量、最小割 净流和容量的区别: 穿过(S,... 阅读全文
posted @ 2014-06-13 20:54 windmissing 阅读(612) 评论(0) 推荐(0) 编辑
摘要: 一、概念1.定义与性质(1)设x为二叉查找树中的一个结点,若y是x左子树中的一个结点,则key[y] 2 #include 3 using namespace std; 4 5 struct BST_Node 6 { 7 public: 8 int key;//关键字 ... 阅读全文
posted @ 2014-06-10 20:33 windmissing 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 题目:给出一个O(n)时间的算法,在给定一个有n个不同数字的集合S以及一个正整数k<=n后,它能确定出S中最接近其中位数的k个数思考:step1:求出数组的中位数的值O(n)step2:计算数组每个数与中位数差的绝对值,存于另一个数组B中O(n)step3:求出数组B中第k小的数ret O(n)step4:计算数组S中与ret差的绝对值小于ret的数并输出O(n)其中,step4也可以通过划分的方法找出数组S中与ret差的绝对值小于ret的数代码: 1 #include <iostream> 2 using namespace std; 3 4 int length_A; 5 阅读全文
posted @ 2012-06-25 15:06 windmissing 阅读(382) 评论(0) 推荐(0) 编辑