
算法
栖息
看得见的是做作,看不见的是执着
展开
-
浅谈 磁盘调度算法(转)
磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种: 先来先服务算法(FCFS), 最短寻道时间优先算法(SSTF), 扫描算法(SCAN), 循环扫描算法(CSCAN) 例:假定某磁盘共有200个柱面,编号为0原创 2013-09-14 16:08:53 · 1277 阅读 · 0 评论 -
进程调度及调度策略
进程调度负责动态的将CPU分配给各个进程。主要功能如下: (1)记住进程状态。 (2)决定哪个进程,什么时候获取CPU及其占用多长时间。 (3)把CPU分配给进程,即将选中进程的PCB中有关进程的相关信息,如程序状态寄存器、通用寄存器等内容送入CPU的相应的寄存器中,从而让该进程占用CPU去运行。 (4)收回CPU。 启动进程原创 2013-10-05 10:51:51 · 2351 阅读 · 1 评论 -
二叉树的遍历(层遍历和深度遍历)
定义: 1、满二叉树:一棵深度为k且有2的k次方减1个结点的二叉树称为满二叉树 2、完全二叉树:如果有深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。 性质: 1、二叉树的第i层上至多有2的i-1次方个结点(i>=1)。 2、深度为k的二叉树至多有2的k次方减1个结点(k>=1)。 3、对任何一棵二叉树T,如果原创 2013-10-31 11:33:52 · 1326 阅读 · 1 评论 -
trie树--详解
本文讨论一棵最简单的trie树,基于英文26个字母组成的字符串,讨论插入字符串、判断前缀是否存在、查找字符串等基本操作;至于trie树的删除单个节点实在是少见,故在此不做详解。 l Trie原理 Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 l Trie性质 好多人说trie的根节点不包含任何字符原创 2013-10-19 22:56:10 · 954 阅读 · 0 评论 -
散列表
散列表的基本概念 假设某应用要用到一个动态集合,其中每个元素都有一个属于[0..p]的关键字,此处p是一个不太大的数,且没有两个元素具有相同的关键字,则可以用一个数组[p+1]存储该动态集合,并且使用关键字作为数组下标进行直接寻址。这一直接寻址思想在前面的非比较排序中就有所应用。然而,当p很大并且实际要存储的动态集合大小n 散列表(Hash table),使用具有m个槽位的数组来存储大小为原创 2013-09-29 11:48:11 · 1146 阅读 · 0 评论 -
常用排序及其时间复杂度
1.选择排序:不稳定,时间复杂度 O(n^2) 选择排序的基本思想是对待排序的记录序列进行n-1遍的处理,第i遍处理是将L[i..n]中最小者与L[i]交换位置。这样,经过i遍处理之后,前i个记录的位置已经是正确的了。 2.插入排序:稳定,时间复杂度 O(n^2) 插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。第i遍处理仅将L[i]插入L[1..i-转载 2013-09-28 10:15:36 · 920 阅读 · 0 评论 -
堆排序详解
堆排序 堆积排序(Heapsort)是指利用堆积树(堆)这种资料结构所设计的一种排序算法,可以利用数组的特点快速定位指定索引的元素。 堆排序原理及分析 起源 计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法( Heap Sort ) “堆”定义 n个关键原创 2013-09-25 18:30:58 · 1749 阅读 · 0 评论 -
25匹马赛跑确定前五匹马的问题
1、先看下条件:总共25匹马,每个马的状态是稳定的,每场比赛最多只能有五匹马进行赛跑。 2、问题是至少要比赛多少场才能确定跑得最快的五匹马? 思路: 1、我们用A~E给五组马编号,先分成五组,比赛五场,得到如下组内排序:(5场) A A1,A2,A3,A4,A5 B B1,B2,B3,B4,B5 C C1,C2,C3,C4,C5 D D1,D2,D3,D4,D5 E E1原创 2013-09-28 11:51:59 · 4704 阅读 · 0 评论 -
火车运煤问题
题目: 你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市? 开始看到题目觉得没有解,火车运1000吨,到终点后,什么也没有了,都在路上消耗光了,但是一次性从头开到尾,还有很转载 2013-10-05 00:17:15 · 1090 阅读 · 0 评论 -
B树、B-树、B+树、B*树都是什么(转)
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果原创 2013-09-17 22:04:43 · 1121 阅读 · 0 评论 -
红黑树
介绍另一种平衡二叉树:红黑树(Red Black Tree),红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和Robert Sedgewick改成一个比较摩登的名字:红黑树。 红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,转载 2013-09-17 22:07:04 · 957 阅读 · 0 评论 -
二叉树遍历
二叉树遍历: ① NLR:前序遍历(PreorderTraversal亦称(先序遍历)) ——访问根结点的操作发生在遍历其左右子树之前。 若二叉树非空,则依次执行如下操作: ⑴ 访问根结点; ⑵ 遍历左子树; ⑶ 遍历右子树。 ② LNR:中序遍历(InorderTraversal) ——访问根结点的操作发生在遍历其左右子树之中(间)。 若二叉树非空,则依次执行如下操作: ⑴遍原创 2013-09-16 11:54:11 · 1295 阅读 · 0 评论 -
Java垃圾回收机制
综合了若干人的blog~ 1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的原创 2013-09-14 19:09:08 · 1620 阅读 · 0 评论 -
8大排序算法
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法一:插入排序 插入排序示意图 插入排序是一种最简单直观的排序算法,它的工作原理是原创 2014-08-18 13:09:44 · 1090 阅读 · 0 评论