不插电的计算机科学
  • 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. 活动8 — 与时间赛跑:排序网络

排序网络

Previous活动8 — 与时间赛跑:排序网络Next这个活动在说什么?

Last updated 7 years ago

在活动之前,先用粉笔在场地上标记此网络的图形。

步骤说明

这些活动将会展示电脑如何使用“排序网络”来排序随机产生的数字。

  1. 每六个学生一组,每次只有一队可以使用网络。

  2. 每个团队成员都拿一张有编号的卡片。

  3. 每个成员各站在场地的左侧(入口)的一个正方形内,成员手上的编号必须排列成混乱的顺序。

  4. 成员沿着地上所画的线移动,到达圆圈后,你必须等待另一个人到达。

  5. 当队伍中的另一位成员到达你的圆圈后,两个人就比较手上的卡片。数字比较小的队员,走左边离开到下一个节点;数字比较大的队员则走右边离开。

  6. 你到场地的另一侧时的顺序是正确的吗?如果队伍中有人犯了错,则整个团队必须从新开始。确定你是否已经了解网络节点的运作机制,也就是小的值往左,大的值往右,以下图为例:

活动变化

  1. 当学生熟悉活动运行方式之后,用计时表来测量每一队花多少时间来通过整个网络。

  2. 使用数字大一点的卡片(例如:素材中提供的三位数卡片)。

  3. 新增更大的数字,让学生要多花一点时间来比较。也可以改用单字,用字母顺序来进行比较。

  4. 这个活动也可以用来作为其他学科的练习,比如音乐,你可以比较印在卡片上的音符,并依照它们的音高来排序。

延伸活动

1.如果改成数字较小的去右边,数字较大的去左边,结果会变成怎样?(数字会按照相反的顺序排序。)

如果整个网络反过来跑(从右侧到左侧),能正确排序吗?(不一定,学生应该能够找到一个例子,最后的顺序是错误的。)

4.尝试做一个大点的排序网络。

6.日常生活中哪些事情可以或不可以用平行处理的观念来加速进行?例如,做饭时只用一个炉子就会慢很多,因为所有的菜必须一个接一个来烹饪。怎样的工作可以让更多的人同时进行?怎么样的工作不能呢?

2.试着设计出小一点或大一点的网络,像这样的网络只对三个数字做排序,让学生自己去畅想。

3.下面是针对四个数字做排序的两个不同的网络。哪一个比较快?(第二个比较快。因为第一个网络是一个个做比较,而第二个有一些比较可以同时被执行。第一个网络是“窜行处理”(Serial processing)的一个例子,第二个网络则使用“并行处理”(Parallel processing),因为跑得更快。)

5.网络也可以用来找到输入的最小值或最大值。例如,这里是一个接受八个输入值的网络,最后的输出只有一个,就是所有输入的最小值(其他的值都会停留在网络中的死角)。