快速排队怎么做?
2022-03-17逸之
逸之
今天天朗气清,正是适合户外活动的好日子。同学们在操场上以班级为单位,排成了一排排整齐的队伍,等待老师的安排。
老师满意地点点头,说:“同学们,今天我们来做个小游戏。”她说完就给同学们贴上了臂贴。“刚才给大家贴上的是印有1~10000范围内的100個随机整数的臂贴,大家该如何用最快的速度,按从小到大的顺序重新排队呢?”老师贴完问同学们。
插入排队
同学们愣了一会儿,1位编号较小的同学赶紧报出自己的号码,很快就有不少人挤到了他的前面。
此时,三班的班长小顾站了出来,说:“大家安静,我是621号。同学们从队首开始一个个地过来,比我大的站我后面,比我小的站我前面。后来的同学从新队伍的队首往队尾走,依次对比双方的臂贴数字,主动插在比自己小和比自己大的两个人中间。”
同学们在小顾的引导下,就像玩扑克牌时抓牌的过程一样,每抓一张牌就把它插在正确的位置,同学们又重新排成了整齐的队伍。
冒泡排队
“同学们再想想,还有没有其他的方法?”老师一边提问,一边给同学们更换印有新编号的臂章。
新的一轮游戏开始了。盲目报数只会让现场更加混乱,同学们吸取了上一轮的经验,整个队伍变得十分安静。
这时,二班的小沈同学突然想到:既然每个人都可以看到自己前后同学的编号,那他就可以让编号更小的同学走到前面。整个队伍只需要按一定次序去做,就能通过两两比较、两两交换的方式把拥有最小编号的同学送到队首。
首先,让队尾的最后2位同学比较编号的大小,如果第100位的编号比第99位的编号小,他俩就交换,反之就不动。接着,让第99位和第98位比较编号的大小,同样把编号小的同学换到第98位,以此类推,直到队首的第2位和第1位同学完成比较,队伍中编号最小的同学就站到了第1位。但这样也只选出了第1个编号的同学,要将队伍排好将会是个大工程啊!小沈小心翼翼地把自己的想法告诉了老师。
排序前:
队伍从后往前比较编号:
编号最小的同学来到了第1位:
老师朝她竖起了大拇指,并向同学们转述了这一方法:“每一轮比较中,编号小的同学就像水底的气泡慢慢地冒了上来,这种方法就叫‘冒泡排队吧!”同学们哈哈大笑,花了好一阵工夫,终于把每个“气泡”都“冒”到了正确的位置。
快速排队
看着所剩不多的活动时间,老师决定不再为难大家,公布了最后一种方法——“快速排队”。
老师开始介绍:“首先,我让编号为2021的小张作为第1条界线。现在编号比小张小的同学都排到他前面,编号比他大的同学都排到他后面,顺序不重要。”所有的同学都动了起来,很快站成了一个新的队伍。
“大家有没有发现,以小张为分界线,同学们已经分成了2组。接下来小张不要动,新分出来的组重复刚才的过程,各选出1名同学当分界线后继续分组,这样整个队伍就能继续分成4组、8组、16组……组的数量像细胞分裂一样暴增,很快就能完成整体的排队。这样,所有尚未处在正确位置的同学自始至终没有闲着,排队的效率一下就变高了!”
同学们张大嘴巴,对这种独特的排队方式感到无比新奇。大家在热闹却不混乱的氛围中,真的以更快的速度完成了排队。
平时大家排队集合的时候是不是也乱糟糟的呢?那还不快来学两招,到时候看看哪个班级的队伍排得又快又好!