排序算法的体验游戏

  今天监考排座位时出现了一些混乱。

  我要求他们按顺序每列N人坐好。若学号是连续的,1到N号第1列,N+1到2N号第2列,这个好说。乱就乱在,参加考试的同学的学号不连续,中间有断号。规则说来简单,若2号、3号空缺,4号需要直接坐在1号后面。

  由于手头没有名单,这对于每位同学而言,确实困难,35号必须要看到前面紧临的31号坐定才能确定自己的位置。这是一个必须顺序完成的任务。一时间,学生们陷入相互等待,在教室后面缩成一堆,谁也不动。最后,我和班干部采用了逐个叫号的方式才将坐位排定。

  坐定之后,我对同学们只知道面面相觑表达了不满。解决这个问题,学号小的同学应该立即行动找到自己的位置,学号大的同学紧随其后,可以相互间及时交流学号信息,确定谁前谁后。在大学中的学习,除了专业知识,其他的素质也要提高。这件事情,反映出了在共有需求(早坐好,就能早发卷)下,整个群体或者是对规则缺乏理解力,或者就是相互观望相互依赖性太多。执行力、领导力在这件事情上能够体现,立刻主动地行动,而不是等谁挨个叫号,培养的也就是这样的素质。

  我和同学们说,如果这是一场招聘会,给出一个规则,谁能够迟早掌握并及时做出行动,这个人将占得先机。如果这是在工作中的一个场景,竞争对手间谁脱颖而出,结果很显然。立即行动,作为一个很重要的习惯要自己培养,事事可以培养。

  考试开始了,同学们进入了紧张的答题。无聊的监考老师,此刻却是头脑中可以极尽自由的时候,各种胡思乱想,随便。

  我想到,刚才的事情,就是一个排序问题。排序,是计算机科学中的一个基本问题,无论计算机求解问题,还是日常生活中的问题,排序随处可见。这些学生这学期正学数据结构和算法,这件事,他们可以用学到的算法作指导。

  在程序设计课程中,我提倡同学们自己做点卡片写上数字,按算法流程比较、移动,体验排序算法。最简单的,直接用扑克牌就可以。匈牙利 Sapientia 大学的大学生,将 6 种排序算法编成舞蹈,很是好玩(点击“链接”可以看到的是其中的冒泡排序舞蹈秀)。我曾经和儿子一起,拍过一个扑克版的排序视频。

  传统的这些算法,都是单控制流的。程序设计、算法与数据结构课,也只关注单控制流的算法。

  今天的场景,可以编排成一个体现多控制的排序游戏。再说高大上一些,归为多处理器的并行排序,或者多Agent的协调,都可以。

  游戏规则:制作 n 张卡片,印上随机的数字,随机的发给排成一行的 n 个游戏参与者,相邻的人可以互看卡片比较大小,必要时交换位置,最后按手持卡片中数字的顺序排好顺序。要做的基本操作只是比较、交换位置,是多人同时进行的。在这里,每个人,就是一个处理器,就是一个Agent。为增加游戏的趣味性,由两组或多组人同时做这一件事,最快者获胜。要在课堂上玩,简便的奖惩手段,由赢者刮输者的鼻子。

   还可以让这些人坐在教室中的同一列座位上,坐着的人不动,前后相邻的人交换卡片。一样的道理。

  这个游戏前,不必讲并行算法的思想,可以重复几次,学生群体借此悟到有效的策略。

  除了体验排序算法,这个游戏的功能还有团队精神和合作能力的培养——每一个“处理器”都需要努力,才能尽快地完成,任何个人的迟疑、等待,都不利于团队最终的目标实现。不得不说,当前的大学生人人都想着自主,但凡事都等着有人统一指挥,缺少了在团队中的等量投入,自己的自主能力也得不到提高。

  这个游戏,以后可以用到课堂里,也可以用到课外团队拓展训练中。用这个游戏训练过的学生,安排座位不用这么费劲,做其他事情也会不一样。

  有闲的监考,带来了好点子。





=================== 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====



MySQL数据库从入门实战课

12-31
限时福利1:购课进答疑群专享柳峰(刘运强)老师答疑服务。 限时福利2:购课后添加学习助手(微信号:csdn590),按消息提示即可领取编程大礼包! 注意:原价129的课程,最后2天限时秒杀仅需49元!! 为什么说每一个程序员都应该学习MySQL? 根据《2019-2020年中国开发者调查报告》显示,超83%的开发者都在使用MySQL数据库。 使用量大同时,掌握MySQL早已是运维、DBA的必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入的了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺的技能! 【课程设计】 在本课程中,刘运强老师会结合自己十多年来对MySQL的心得体会,通过课程给你分享一条高效的MySQL入门捷径,让学员少走弯路,彻底搞懂MySQL。 本课程包含3大模块:  一、基础篇: 主要以最新的MySQL8.0安装为例帮助学员解决安装与配置MySQL的问题,并对MySQL8.0的新特性做一定介绍,为后续的课程展开做好环境部署。 二、SQL语言篇: 本篇主要讲解SQL语言的四大部分数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL,学会熟练对库表进行增删改查等必备技能。 三、MySQL进阶篇: 本篇可以帮助学员更加高效的管理线上的MySQL数据库;具备MySQL的日常运维能力,语句调优、备份恢复等思路。  

Java进阶高手课-核心篇

04-17
<p> <br> </p> <p> Java进阶的必经之路!<span></span> </p> <p> <br> </p> <p> <b>【超实用课程内容】</b><b></b> </p> <p> 本课程囊括了<span>Java</span>语言进阶的核心知识点,以真实场景项目实战为导向,循序渐进,深入浅出的了解Java并发编程、JVM虚拟机、网络编程和MySQL应用,讲解<span>Java</span>这门使用广泛的编程语言,助你能够游刃有余地游走在这些技术之中。<span> </span> </p> <p> <br> </p> <p> 套餐中一共包含<span>4</span>门<span>Java</span>进阶必学的核心知识(共<span>57</span>讲) </p> <p> 课程<span>1</span>:《<span>Java</span>进阶高手课<span>-</span>并发编程透彻理解》 </p> <p> 课程<span>2</span>:《<span>Java</span>进阶高手课<span>-</span>深入<span>JVM</span>虚拟机》 </p> <p> 课程<span>3</span>:《<span>Java</span>进阶高手课<span>-</span>深入浅出<span>Java</span>网络编程》 </p> <p> 课程<span>4</span>:《<span>Java</span>进阶高手课<span>-</span>必知必会<span>MySQL</span>》 </p> <p> <br> </p> <p> <strong>【</strong><strong>哪些人适合学习这门课程?</strong><strong>】</strong><strong></strong> </p> <p> 1)大学生,平时只接触了语言基础,并未学习深入语言内核; </p> <p> 2)对<span>Java</span>掌握程度薄弱的人,课程可以让你更好的理解<span>Java</span>语言原理及应用 </p> <p> 3)想修炼更好的<span>Java</span>内功,工作中遇到<span>Bug</span>可以游刃有余 </p> <p> 4)被面试官打破沙锅问到底的问题问到怀疑人生的应聘者 </p> <p> <br> </p> <p> <strong>【</strong><strong>你能收获到什么?</strong><strong>】</strong> </p> <p> 1.基础再提高,针对<span>Java</span>核心知识点学透,用对<span> </span> </p> <p> 2.能力再提高,日常工作中的代码换新貌,不怕问题<span> </span> </p> <p> 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力<span>MAX</span> </p> <p> <br> <strong>【课程如何观看?】</strong> </p> <p> 1、登录<span>CSDN</span>学院<span> APP </span>在我的课程中进行学习; </p> <p> 2、移动端:<span>CSDN </span>学院<span>APP</span>(注意不是<span>CSDN APP</span>哦) </p> <p> 本课程为录播课,课程<span>2</span>年有效观看时长 </p> <p> <br> </p> <p class="ql-long-24357476"> <strong>【</strong><strong>资料开放</strong><strong>】</strong><strong></strong> </p> <p class="ql-long-24357476"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476"> 下载方式:电脑登录课程观看页面,点击右下方课程资料、代码、课件等打包下载 </p> <p class="ql-long-24357476"> <img src="https://img-bss.csdn.net/202004200153008539.png" alt=""> </p> <p> <br> </p>
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值