不插电的计算机科学
  • Introduction
  • 前言
  • 特别鸣谢
  • 第一部分 - 数据:最原始的材料
    • 活动1 - 计算“点”-二进制数
      • 素材:二进制数
      • 二进制数
      • 活动学习单1: 二进制数
      • 活动学习单2: 使用二进制表示数字
      • 活动学习单3: 传送秘密信息
      • 活动学习单4: 电子邮件与数据机
      • 活动学习单5: 数到31以上
      • 活动学习单6: 更多关于二进制数的知识
      • 这个活动在说什么?
      • 答案和提示
    • 活动2 - 用数字表示颜色 — 图像展示
      • 用数字表示颜色1
      • 用数字表示颜色2
      • 活动学习单1: 儿童传真
      • 活动学习单2.1: 做出自己的图片
      • 活动学习单2.2: 做出自己的图片
      • 这个活动在说什么?
      • 答案和提示
    • 活动3 - “你说什么?” - 文字压缩
      • “你说什么?”
      • 活动学习单1:“你说什么?”
      • 这个活动在说什么?
    • 活动4 - 翻转卡片魔术 - 错误的检测和修正
      • 魔术般的技巧
      • 一个现实的范例:书码与条码
      • 这个活动在说什么?
    • 活动5 - 二十个问题 - 信息理论
      • 二十个问题
      • 活动:二十个问题
      • 活动学习单1: 决策树
      • 这个活动在说什么?
      • 答案和提示
  • 第二部分 - 让计算机运行:算法
    • 活动6 - 海战棋:搜索算法
      • 海战棋活动 — 暖身
      • 线性搜索游戏
      • 二元搜索游戏
      • 哈希法搜索
      • 延伸活动
      • 这个活动在说什么?
    • 活动7 — 从最重到最轻:排序算法
      • 最重与最轻
      • 学习活动单:重量的排序
      • 学习活动单:分治法(Divide and Conquer)
      • 这个活动在说什么?
      • 答案和提示
    • 活动8 — 与时间赛跑:排序网络
      • 排序网络
      • 这个活动在说什么?
Powered by GitBook
On this page
  • 活动说明
  • 活动讨论
  1. 第二部分 - 让计算机运行:算法
  2. 活动6 - 海战棋:搜索算法

哈希法搜索

活动说明

  1. 跟前面一样,每一个人那一张纸,然后告诉你的同伴你所选的船的数字。

  2. 不过在这个游戏之中,你可以找到这艘船在哪一行(0到9)里,只要简单地把战舰上的数字每一位数拆开,在一个个加起来,它们的和的最后一位数字就是战舰所在的行。比方说,A战舰上的数字是2345,那就把2345拆开在分别加起来(2+3+4+5),得到的和为14,它的最后一位为4,所以A战舰一定位于第4行。当你知道在第几行以后,你就需要猜测在那一行中哪一艘战舰是你要打的。这种方法称为“哈希标记”。

  3. 现在运用这个新的方法来玩这个游戏,同一张纸可以玩好几次,只要每次选择不同的行即可。

(注意:不像其他的游戏,纸张3A'和3B'需要成对,因为成对的纸张中,战舰所在的行才会一样。)

活动讨论

  1. 像之前一样讨论分数所代表的意义。

  2. 那些船会很快被找到?(在那一行中只有一艘船的。)哪些船会比较难被找到?(某些船所在的行中有很多其他船的。)

  3. 三种搜索法中,哪一个最快?为什么?

三种不同的搜索法,它们个别的优点是什么?(第二种搜索法比第一种快,但第一种搜索法不需要照顺序排列。第三种搜索法通常来说会比前两种快,但也有可能会变得非常慢。在最糟的情况下,如果所有船都在同一行,那就会变得和第一种搜索法一样慢。)

Previous二元搜索游戏Next延伸活动

Last updated 7 years ago