2009年8月10日
#
摘要: TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。
DOM模型即文档对象模型,是将整个文档分成多个元素(如书、章、节、段等),并利用树型结构表示这些元素之间的顺序关系以及嵌套包含关系。
阅读全文
2009年7月29日
#
摘要: 希尔排序实际上是一种分组插入排序,它的执行时间依赖于增量序列,而且是不稳定的。其基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2
阅读全文
2009年7月27日
#
摘要: 归并算法的核心操作就是将一维数组中前后相邻的两个两个有序序列合并成一个有序序列。合并算法也可以采用递归算法来实现,形式上较为简单,但实用性很差。合并算法的合并次数是一个非常重要的量,根据计算当数组中有3到4个元素时,合并次数是2次,当有5到8个元素时,合并次数是3次,当有9到16个元素时,合并次数是4次,按照这一规律,当有N个子序列时可以推断出合并的次数是X(2 >=N,符合此条件的最小那个X)。
阅读全文
2009年7月25日
#
摘要: 异步IO中也有高效低效之分,但主要还是要看具体的应用到底需要什么样机制。比如大家熟知的select就是个非常通用且跨平台的方法,由于select中需要把大量的时间花在维护IO句柄上,导致其效率大打折扣,一般来说,对于小并发的异步IO操作,比如普通的客户端或者是小并发量的服务器,它的效率可能也足够了。关于select的效率问题其实从各平台上对于FD_SETSIZE的定义就能看出一些来,在windows平台上,FD_SETSIZE是64,在Linux平台上是1024,也就是说,对于平台提供商来说也不指望他们提供的select能给你多大的并发吞吐能力。
阅读全文
摘要: 所谓的同步和异步,在这里指的是应用程序和内核之间的交互方式。如果应用程序不需要等待内核的回应,那么它就是异步的。如果应用程序提交完IO请求后,需要等待“回执”,那么它就是同步的。而阻塞和非阻塞,指的是应用程序是否等待IO操作的完成。如果应用程序必须等到IO操作实际完成以后再执行下面的操作,那么它是阻塞的。反之,如果不等待IO操作的完成就开始执行其它操作,那么它是非阻塞的。
阅读全文
2009年7月20日
#
摘要: 在当前无序区R[1..H]中任取一个数据元素作为比较的"基准"(不妨记为X),用此基准将当前无序区划分为左右两个较小的无序区:R[1..I-1]和R[I+1..H],且左边的无序子区中数据元素均小于等于基准元素,右边的无序子区中数据元素均大于等于基准元素,而基准X则位于最终排序的位置上,即R[1..I-1]≤X.Key≤R[I+1..H](1≤I≤H),当R[1..I-1]和R[I+1..H]均非空时,分别对它们进行上述的划分过程,直至所有无序子区中的数据元素均已排序为止。
阅读全文
摘要: 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。
阅读全文
摘要: 每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。
阅读全文
摘要: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
阅读全文