生活中关于清点人数之设计

一提到数据结构,大家想起的都是计算机程序中的。到现实生活中,人们却往往容易忽视设计好的数据结构的重要性。

这次CSDN英雄会过程活动组织中,遇到一个需求。由于各路英雄众多,所以CSDN在组织的时候,经常需要清点人数。而CSDN的做法是这样的,由领队拿着一张名单,依此报出名字,在场的人喊声“到”。

我相信这是中国特色的清点方式。事实上,我们喊“到”的经验一定不少,以至于很多人都不愿意被迫喊这个字,有些人改成“来了”,有些人说“在”,有些人干脆举个手。不管怎么样,每个人基本用一句话来完成自己在清点过程中的任务,虽然感觉有点傻。

后来,在爬长城的时候,我又想起这个清单问题。因为这个时候情况比较混杂,不是什么时候都在一个车子上清点,清点的难度非常大。如果噪音大的话,这样的清点就更难了。于是我就想到了改进我们的清点方式。

我们先来看看传统的清点方式的特点:

  1. 有一位清点者
  2. 有一份名单列表
  3. 一般是顺序清点

这种方式的缺点,基本可以找到一些:

  1. 如果没有人清点,没有人知道是否来全了
  2. 由于顺序清点,效率很低。找人的效率也很低
  3. 如果找不到人,那么补救的方式比较被动

如果我们要改进,从哪里入手呢?分析一下这个系统,如果一个人相当于一台计算机的话,传统的清点方式,只是充分使用了“清点者”这台计算机。基本上所有的计算都集中到了它的身上。而每一个被清点的,只是完成了一个简单的报到工作。这显然是一个巨大的浪费。

而我们的数据结构的设计,正可以从此下手。整个思路,就是增加并行运算。我提出一个基本可行的方案:

  1. 取消清点者
  2. 每一个人记住两个人,保证一个群体中,每一个人被人记住
  3. 不存在任何一个子集,其中任何一个人不被子集外的人记住
  4. 清点的时候,每一个人都清点其记住的两个人

显然,这个方案的执行的时候,是非常迅速的。与之对应的,在队伍组织的初期,必须安排好每一个人应该记住的人。这也说明了,并行是需要统筹的。

观察这个方案,每一个人(计算机),已经不再只是承担“报到”的功能,每一个人都有自己的记忆,并且有各自的判断。他们只是在发生异常的时候,向整个系统报告,否则无需“报到”!

总结以下,其实,计算机中的计算方式就是从生活抽象而来的。但我们也应该关注到,计算机的思想,也可以借用到我们现实生活中来。一句话,只要是好的,我们都可以用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值