摘要: 选择排序1.直接选择排序时间复杂度:O(N^2)空间复杂度:O(1)算法思想:进行N趟排序,每一趟都从未排序序列中选择一个最大或最小的值放入排序序列中稳定性:不稳定template<class KeyType> int min_key(KeyType A[], int low, int high) //从数据集合中选择最小的关键字,并返回数组下标 { int min_pos = low; for(int pos=low+1; pos<high; pos++) { if (A[pos]<A[min_pos]) { min_pos = pos; } } return m.. 阅读全文
posted @ 2012-10-02 19:07 刘军newhand_liu 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 应用层应用层协议定义了在不同端系统的应用程序进程如何进行通信,即相互传递报文:交换的报文类型:如请求报文和响应报文;各种报文类型的语法:如报文中各个关键字段及其详细描述;报文的语义:即包含在字段中的信息的含义;进程何时、如何发送报文及对报文进行响应的规则。HTTP(Hypertext Transfer Protocol)使用TCP做为传输层协议;不保存客户机的任何状态信息,是一个无状态协议;端口号默认为80;非持久连接:每一个请求/响应对是经一个单独的TCP连接发送,即每次响应完毕后就会关闭TCP连接;持久连接:同一个客户机的所有的请求/响应对经同一个TCP连接发送,一般会设置一个超时间隔;4 阅读全文
posted @ 2012-10-01 12:02 刘军newhand_liu 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 连通图:无向图中每一对顶点间都存在一条路径强连通图:有向图中每一对顶点间都存在一条路径弱连通图:有向图去掉边的方向后可以变成连通图完全图:每一对顶点间都存在一条边邻接矩阵:用一个二维数组來表示图邻接表:用一个数组存储图的结点,每个结点保存一个链表,链表中存放所有邻接的顶点拓扑排序:对有向无圈图的一种排序,它使得如果存在一条vi到vj的路径,那么在排序中vj出现在vi的后面。排序过程: 用一个队列存储入度为0的顶点 1.遍历图,将入度为0的顶点保存到队列中 2.从队列中取出一个顶点,更新该顶点的邻接顶点的入度(减1),如果入度为0,则保存到队列中。 3.循环执行步骤2,直至队列为空。单源最短路径 阅读全文
posted @ 2012-09-25 20:18 刘军newhand_liu 阅读(218) 评论(0) 推荐(0) 编辑
摘要: chap4.处理器体系结构指令执行阶段取指(fetch):从存储器中读取指令字节,地址为PC的值。从指令中抽取出指令指示符字节的两个四位部分,称为icode(指令代码)和ifun(指令功能)。它可能取出一个寄存器指示符字节,指明一个或两个寄存器操作数指示符rA和rB。它还可能取出一个四字节常数字valC。它按顺序方式计算下一条指令的地址valP,valP等于PC的值加上已取指令的长度。译码(decode):从寄存器文件中读入最多两个操作数,得到值valA和值valB。执行(execute):ALU要么执行指令指明的操作,计算存储器引用的有效地址,要么改变栈指针。访存(memory):可以将数据 阅读全文
posted @ 2012-09-25 14:35 刘军newhand_liu 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 定义一棵M(M>2)阶B-tree应该满足以下定义:每个结点的孩子结点个数不超过M个;非根结点的孩子结点个数不少于ceiling(M/2)个;N个结点关键字对应N+1个孩子结点;假设结点有关键件key1、key2、...、keyN,则有孩子结点指针child1、child2、...、childN、child(N+1),且有MaxKeyValue(child1)<key1<MinKeyValue(child2)<...<KeyN<MinKeyValue(Key(N+1));结点中存有关键字和数据。实现#pragma once template<class 阅读全文
posted @ 2012-09-16 16:41 刘军newhand_liu 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 定义:一棵M(M>2)阶的B+树满足以下定义:1.B+树中包含两种类型的结点:内结点和叶子结点。内结点存有关键字和孩子结点的指针,叶子结点存有关键字和数据;2.每一个关键字都会在叶子结点中出现,叶子结点按照关键字的大小排序,叶子结点中会存有指向兄弟结点的指针;3.一棵B+树一般存有两个指针:一个指向根结点,一个指向存有最小关键字的叶子结点;4.每个内结点至多有M个子树;5.每个非根内结点至少有ceiling(M/2)个子树;6.N个子树对应N-1个关键字(ps:另外一种说法是N个子树对应N个关键字,我参考的维基百科的定义http://en.wikipedia.org/wiki/B%2B_ 阅读全文
posted @ 2012-09-15 16:28 刘军newhand_liu 阅读(2835) 评论(1) 推荐(0) 编辑
摘要: 转载地址:http://www.ruanyifeng.com/blog/2012/04/functional_programming.html诞生50多年之后,函数式编程(functional programming)开始获得越来越多的关注。不仅最古老的函数式语言Lisp重获青春,而且新的函数式语言层出不穷,比如Erlang、clojure、Scala、F#等等。目前最当红的Python、Ruby、Javascript,对函数式编程的支持都很强,就连老牌的面向对象的Java、面向过程的PHP,都忙不迭地加入对匿名函数的支持。越来越多的迹象表明,函数式编程已经不再是学术界的最爱,开始大踏步地在业 阅读全文
posted @ 2012-07-18 10:36 刘军newhand_liu 阅读(145) 评论(0) 推荐(0) 编辑
摘要: lua特性总结:lua可以多重赋值,同时函数可以有多个返回值lua函数是一种first-class valuelua函数可以嵌套,closure的概念元表、元方法注释--:行注释 --[[ ]]: 块注释 小技巧: 注释代码: --[[ 代码 --]] 重新启用这段代码: ---[[ 代码 --]]全局变量:将一个值赋予一个全局变量就创建了该全局变量(访问一个未创建的全局变量得到的值为nil);删除一个全局变量,只需将其赋值为nil基础类型:1.nil(空): 用于区别其它任何值; 可用于表示一种“无效值”的情况;2.boolean(布尔): false和true; Lua将值fal... 阅读全文
posted @ 2012-07-17 16:49 刘军newhand_liu 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 转载地址:http://coolshell.cn/articles/5426.htmlvimi游戏地址:http://vim-adventures.com/vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然 阅读全文
posted @ 2012-06-12 19:18 刘军newhand_liu 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 空间配置器的作用我们知道,stl中的数据都是放到容器中的,容器需要存储空间,空间配置器就是负责容器存储空间的分配、回收等一系列内存操作。STL标准规范中描述的allocator模版类的必要声明:Constructors // Constructors used to create allocator objects. allocator(); // Default constructor allocator(const allocator<Type>& _Right); // Copy constructor template<class Other> ... 阅读全文
posted @ 2012-06-06 17:38 刘军newhand_liu 阅读(313) 评论(0) 推荐(0) 编辑