??xml version="1.0" encoding="utf-8" standalone="yes"?>
如果只想在摸个特定的|站中搜索信息,可以用斯特这个关键字?br />
例如Q想?a >www.sohu.com中搜?#8220;新闻”可以这?br />
如:新闻 site:www.sohu.com
3.在url链接中搜索关键字Qinurl
如果惛_url链接中搜索信息,那么可以利用inurl
例如Q想把所有的url链接中有java的站Ҏ(gu)索出来,可以这?br />
如:inurl:java
朋友们,有选择׃有放弃,勇敢的去做吧Q踏q个江湖,带着属于自己的武器去江湖走走Q?/p>
那年江湖两相望,忘穿江水愁断肠?/p>
关于中位敎ͼ数据排序后,位置在最中间的数倹{即数据分成两部分Q一部分大于该数|一部分于该数倹{中位数的位|:当样本数为奇数时Q中位数=(N+1)/2 ; 当样本数为偶数时Q中位数为N/2?+N/2的均|那么10G个数的中位数Q就W?G大的CW?G+1大的数的均gQ?/p>
分析Q明显是一道工E性很强的题目Q和一般的查找中位数的题目有几点不同?br /> 1. 原数据不能读q内存,不然可以用快速选择Q如果数的范围合适的话还可以考虑桶排序或者计数排序,但这里假设是32位整敎ͼ仍有4GU取|需要一?6G大小的数l来计数?/p>
2. 若看成从N个数中找出第K大的敎ͼ如果K个数可以读进内存Q可以利用最或最大堆Q但q里K=N/2,?G个数Q仍然不能读q内存?/p>
3. 接上Q对于N个数和K个数都不能一ơ读q内存的情况Q《编E之》里l出一个方案:设k<K,且k个数可以完全读进内存Q那么先构徏k个数的堆Q先扑ևW?到k大的敎ͼ再扫描一遍数l找出第k+1?k的数Q再扫描直到扑ևWK个数。虽然每ơ时间大U是nlog(k)Q但需要扫描ceil(K/k) ơ,q里要扫?ơ?/p>
解法Q首先假设是32位无W号整数?br /> 1. M?0G个整敎ͼ把整数映到256M个区D中Q用一?4位无W号整数l每个相应区D记数?br /> 说明Q整数范围是0 - 2^32 - 1Q一共有4GU取|映射?56M个区D,则每个区D|16Q?G/256M = 16Q种|?6个值算一D, 0?5是第1D,16?1是第2D,……2^32-16 ?^32-1是第256MDc一?4位无W号整数最大值是0?G-1Q这里先不考虑溢出的情cd占用内存256M×8B=2GB?/p>
2. 从前到后Ҏ(gu)一D늚计数累加Q当累加的和过5G时停止,扑ևq个区段Q即累加停止时达到的区段Q也是中位数所在的区段Q的数D_设ؓ[aQa+15]Q同时记录篏加到前一个区D늚LQ设为m。然后,释放除这个区D占用的内存?/p>
3. 再读一?0G个整敎ͼ把在[aQa+15]内的每个D敎ͼx16个计数?/p>
4. Ҏ(gu)的计Cơ篏加,每次的和设ؓnQ当m+n的Dq?G时停止,此时的这个计数所对应的数是中位数?/p>
ȝQ?br /> 1.以上Ҏ(gu)只要M遍整敎ͼҎ(gu)个整C只是常数旉的操作,M来说是线性时间?/p>
2. 考虑其他情况?br /> 若是有符L(fng)整数Q只需改变映射卛_。若?4为整敎ͼ则增加每个区D늚范围Q那么在W二ơ读数时Q要考虑更多的计数。若q某个计数溢出,那么可认定所在的区段或代表整Cؓ所求,q里只需做好相应的处理。噢Q忘了还要找W?G+1大的CQ相信有了以上的成果Q找到这个数也不难了吧?/p>
3. 时空权衡?br /> p256个区D也许只是恰好配?GB的内存(其实也不是,呵呵Q。可以增大区D范_减少区段数目Q节省一些内存,虽然增加W二部分的对单个数值的计数Q但W一部分Ҏ(gu)个区D늚计数加快了(M改变Q?待测Q?/p>
4. 映射时尽量用位操作,׃每个区段的v炚w?的整数幂Q映v来也很方ѝ?/p>
原文地址 http://www.cppblog.com/richbirdandy/