注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云水居

云在青山水在天,人在江湖不得闲

 
 
 

日志

 
 

笔试(1)-队列的使用  

2010-10-24 20:34:28|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

查看全文


分页
一次网页搜索的结果可能包含来自不同网站的不同网页。
例如,搜索Java关键字,可能搜到20条来自网站a的网页,和30条来自网站b的网页,还有40条来自其它网站的网页。
排序结果可能是:a b a a b k a a c d a y k
如果要每页显示5条,每页只显示同一网站的2条结果。其它的结果放到下一页。
如上例所示,前5条为 a b a a b,有3条来自网站a的结果,所以要把最后一个来自网站a的网页放入第二页,并把第六条结果k放入第一页。
问题是,如何设计一种方式,实现这种检查和调整?
解决方案一:
首先统计每个网站出现的次数,如果大于2,则放入下一页,。。。
第一轮,前五个为:a b a a b,统计a有3个,b有2个,所以要把最后一个a放入下一页,将第6个网页k提出来,然后将a放入第6个的位置。
输出a b a b k, 剩余网站为 a a a c d a y k
第二轮,前一个为 a a a c d,发现a有3个,需要将a放入第6个,但第6个网页还是a,所以要放入第7个,并把第7个的y提出来,然后将第6个a放入第7个的位置,再将第三个a放入第6个的位置。
输出a a y c d,剩余网站为a a k
可以看出,这种方案极其繁琐。编程很难实现,可能还要用回溯递归之类的操作。
下面使用队列的思想完成这个操作。
解决方案二:
做一个队列,然后从头开始,输出并计算每个网站的网页数,如果这个网站的网页数已经够两个,则将其它的加入队列。每页输出结束后,将队列加到剩余网站的开头。
同样用前面的数据a b a a b k a a c d a y k,
输出a b a,然后发现第4个网页也是a,而a已经出现2次了,则将第4个网页加入队列,继续输出 b k
第一次运行结束后,输出为a b a b k
队列为a
剩余网页为 a a c d a y k
将队列加入剩余网页的

查看全文

  评论这张
 
阅读(786)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017