不插电的计算机科学
  • 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 - 海战棋:搜索算法

这个活动在说什么?

计算机存储了大量信息,它们必须能快速的进行搜索和筛选。而搜索引擎所面对的最大问题就是,他们必须要在极短时间内搜索数十亿个网页。计算机通常会利用文字、条码编号或是作者名称,这样的“搜索关键词”来寻找资料。

计算机可以非常快速的处理信息,你可能会认为它们是从头开始,一条一条的寻找,直到找到目标位置。这就是我们在第一个“线性搜索游戏”中所使用的方法。但这种方法 — 即使对计算机而言也过于缓慢了。举个例子,假设一间超市的货架上有一万种不同的产品,当柜员扫描一个条码时,计算机必须最多搜索一万次才能找到产品的名称与价格。这样即使检查每笔条码只花千分之一秒,检查完所有条码也要花10秒。想象一下,要花多少时间才能扫描完一个家庭买的所有东西?

二元搜索法看起来是比较好的方式。二元搜索法中,先将每笔数字照顺序排列,然后检查列表中间的项目,就可以知道要找的关键字是在列表前半还是后半。接着重复该动作,直到找到要搜索的物品位置。就像刚才超市里的例子,一万个物品的位置最多需要十四次检查,也就是大约两百分之一秒 — 几乎是一瞬间就可以完成搜索。

第三个寻找资料的方法叫做哈希法。在这种方法中,关键字本身会直接指示到哪里去找这个信息。举个例子,假设要搜索电话号码,你可以将所有数字加起来,然后除以十一并取余数。这个做法得到的哈希值就像是在活动四里所提到的同位检查数值 — 信息本身的一小部分是从信息的其他部分而来的。用这种方法,通常计算机可以很直接地找到要搜索的信息,不过还是有小部分的可能,在同一个位置有好几个资料,而计算机必须在这几个资料中在继续搜索才能找到目标。

Previous延伸活动Next活动7 — 从最重到最轻:排序算法

Last updated 7 years ago