szhan46

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年11月13日

摘要: O: 1 2 3 4 5V: 9 1 0 5 4sort by V:V: 0 1 4 5 9O: 3 2 5 4 1for(i=1;i<=N;i++) a[p[i].order]=i;修改order对应的值, 但不影响大小关系 阅读全文
posted @ 2013-11-13 14:26 szhan46 阅读(126) 评论(0) 推荐(0) 编辑

2013年11月12日

摘要: 树状数组:http://blog.csdn.net/lulipeng_cpp/article/details/7816527http://www.cnblogs.com/huangxincheng/archive/2012/12/05/2802858.htmlhttp://www.cppblog.com/linyangfei/archive/2008/09/24/62688.html把《编程珠玑》读薄:http://hawstein.com/posts/make-thiner-programming-pearls.html 阅读全文
posted @ 2013-11-12 10:01 szhan46 阅读(128) 评论(0) 推荐(0) 编辑

2013年10月28日

摘要: 函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置举例如下:一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标则pos = lower_bound( number, number + 8, 3) - number,pos = 0.即number数组的下标为0的位置。pos = lower_bound( number, number + 8, 9) - number, pos = 1,即number数组 阅读全文
posted @ 2013-10-28 13:03 szhan46 阅读(272) 评论(0) 推荐(0) 编辑

2013年10月25日

摘要: 先来点概念:http://blog.csdn.net/fudan_abc/archive/2007/07/28/1713976.aspx无聊的it玩家们创建了有一个词,叫做scatter/gather,她是一种用于高性能IO的标准技术.她通常意味着一种DMA传输方式,对于一个给定的数据块,她老人家可能在内存中存在于一些离散的缓冲区,换言之,就是说一些不连续的内存缓冲区一起保存一个数据块,如果没有scatter/gather呢,那么当我们要建立一个从内存到磁盘的传输,那么操作系统通常会为每一个buffer做一次传输,或者干脆就是把这些不连续的buffer里边的冬冬全都移动到另一个很大的buffe 阅读全文
posted @ 2013-10-25 17:16 szhan46 阅读(1659) 评论(0) 推荐(1) 编辑

摘要: 在 IA-32 系统中,物理内存最开始的1GB 被称为“低端内存”,1GB 以上的部分称为“高端内存”。先前的Linux 核心版本要求通往存储设备的数据缓存必须放在物理RAM 的低端内存区域,即使是应用程序可以同时使用高端内存和低端内存也存在同样状况。这样,来自低端内存区域数据缓存的I/O 请求可以直接进行内存存取操作。但是,当应用程序发出一个I/O 请求,其中包含位于高端内存的数据缓存时,核心将强制在低端内存中分配一个临时数据缓存,并将位于高端内存的应用程序缓存数据复制到此处,这个数据缓存相当于一个跳转的buffer。例如一些老设备只能访问16M以下的内存,但DMA的目的地址却在16M以上时 阅读全文
posted @ 2013-10-25 17:12 szhan46 阅读(694) 评论(0) 推荐(0) 编辑

摘要: https://www.kernel.org/doc/gorman/html/understand/understand012.html 阅读全文
posted @ 2013-10-25 17:12 szhan46 阅读(100) 评论(0) 推荐(0) 编辑

摘要: 17.10. The Socket BuffersWe've now coveredmost of the issues related to network interfaces. What's still missing is some more detailed discussion of thesk_buffstructure. The structure is at the core of the network subsystem of the Linux kernel, and we now introduce both the main fields of th 阅读全文
posted @ 2013-10-25 16:58 szhan46 阅读(360) 评论(0) 推荐(0) 编辑

2013年8月25日

摘要: 对于丢失一个数的情况:1)用1+2+...+n减去当前输入数据的总和。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】2)用12...*n除以当前输入数据的总积。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】3)用1^2^...^n的结果在逐个异或当前输入数据。时间复杂度:O(n) 空间复杂度:O(1)4)对输入数据排序,然后从头到尾遍历一次。时间复杂度O(nlogn) 空间复杂度O(1)5) 对输入数据进行Hash,然后从头到尾遍历一次。时间复杂度O(n) 空间复杂度O(n) 阅读全文
posted @ 2013-08-25 14:03 szhan46 阅读(220) 评论(0) 推荐(0) 编辑

2013年7月5日

摘要: 上篇谈到了用异或来解决,确实是个好方法,时间复杂度为o(n),比例一遍ok,空间复杂度为o(1),只占用一个空间足矣。现在把这个问题升级下:(1)给出n个数,其中有且仅有一个出现了奇数次,其余的都出现了偶数次。用线性时间常数空间找出这个出现奇数次的数(2)给定n个数,其中有且仅有两个出现了奇数次,其余的都出现了偶数次。用线性时间常数空间找出这两个出现奇数次的数原理(原理不是很懂的,先看看上篇)任何数和自己异或为0任何数和0异或为自己异或具有交换律思路(1)一个出现奇数次出现偶数次的一异或为0了,对剩下的奇数次数不造成干扰奇数次(2n+1)的前2n次一异或为0了,对剩下那个数不造成干扰剩下的那个 阅读全文
posted @ 2013-07-05 20:16 szhan46 阅读(373) 评论(0) 推荐(0) 编辑

摘要: 问题定义:有2n+1个数,只有一个单着,别的都是成对的,找出这个单着的数。比如:2 1 3 2 1。3是答案。思路一:暴力搜索——每个数都和其他数比较,找不到相同的,就得到了结果。时间复杂度为o(n2)思路二:排序搜索——先给序列排个序,之后从前往后一对一对的找,直到不是成对的为止。时间复杂度,怎么也得o(nlgn)思路三:异或计算,一趟搞定。时间复杂度o(n)直接看思路三:原理:异或操作(^)——(对于位操作)相同为0,相异为1.比如:1^0 = 1, 1 ^1=0这样:两个相同的数异或就为0任何数和0异或为自己(转化到位。1^0 =1,0^0=0)例如:5 ^ 5 = 0 5 ^0 = 5 阅读全文
posted @ 2013-07-05 20:09 szhan46 阅读(226) 评论(0) 推荐(0) 编辑