数据结构狂想曲

     以前在matrix67 空间里看到他在缩写数据结构时,用插入扑克牌与插入排序做比较,一下子就记住了插入排序的思路.最近看<<算法导论>>,胡思乱想的类比了几个.

 

优先级队列/priority queue
    我们去吃烤鱼,人太多需要从小到大排号,每次有空位时服务员会选当前最小号安排座位。但是服务员给我们的号不是连着的,是i*10的格式,我们拿到了30。本来后面的人应该是40,可因为她们都是美女,服务生就把她们改成了25号。然后我们又看到总经理安排了几个NB的关系户来,于是发给他们一个5号,这样无论什么时间来,优先级高的就能先吃,而我们最多要等前面29桌吃完才能吃,如果前面的号可以重复发,我们可能饿晕也吃不上烤鱼了。
    使用二分堆(binary heap)实现的优先级队列可以在O(nlgn)完成建堆操作,并在O(lgn)内实现弹出最高优先级对象、增加对象优先级、插入对象操作。

 

最大流/maximum flow
    詹姆斯、科比、韦德等人随意的站在篮球场(篮球场有些小,就足球场吧)上,姚明站在一头,易建联站在另一头,大卫.斯特恩拿着喇叭大声说要是在三分钟内将500个篮球从这头传到那头的而不碰到草地,就每人发500万奖金。这些人于是就疯狂的传啊传啊,可是大家能力不一样啊,单位时间内扔出的球数N不一样,而且为了保证球不能掉到草坪上,每人扔出的球必须等于接到的球,怎么安排能传到尽可能多的球。


散列/哈希/hashing
    LG(流感)医院今天来了20个人,刚好有23个病房,医改后每次都是根据患者的出生年份(身份证号后四位)iYear安排病房。护士小一的安排方式是:病房号 = (iYear) mod 23,重复了就在相应病房加床;后来大家说一间病房住多于一个人不利于康复,于是护士小二换了安排方式:病房号 = (iYear-1900) mod 23, 重复或者有人住了就依次往后推,到了23号就返回;再后来医生经常找不到自己的病人,轮到小三上场了,小三果然是小三,她打破规定,关了后面三间病房,按住院时间顺序1到20给了每个人一个编号,于是皆大欢喜。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值