每周五晚轻松开讲,做最新鲜最有趣的科技教育讲座。
在我们的日常生活中,排序在很多场合都起到了不可替代的作用。(如将电话簿中的姓名、字典、图书索引、图书馆或书架上的书、邮递员包裹里的信件、班级名册、 地址簿、计算机中的文件列表)
排序能够使我们快速进行查找,凸显重要的内容,而无序引起的常见的问题是人们需要花费大量时间来查找目标。
本课重点部分提要
通过天平和砝码的配合,让天平两端的重量一模一样,就能达到一种平衡。所以我们要去通过选择合适的砝码来测得我们物体的重量。
砝码分为很多重量(有轻有重),本次讲座主要通过学习一些很好的排序方法,去进行这个砝码重量的排列。
我们先来看一下这样的小实验:
林老师做了一个简单的动画,把砝码换成了西瓜,有一杆天平,有12只西瓜(编号1~12)方便称呼。
问题是:这12只西瓜其中有11只西瓜是一摸一样的重量,我们要找出那个重量不一样西瓜?
(正确答案是3次,有没有同学知道怎么运用三次机会把它找到呢?)
这里有一个小方法,林老师用了电脑的小程序来模拟比较重量。
首先,两边各选4个西瓜。
1、2、3、4 = 5、6、7、8
(这里可以知道这8个西瓜都是一样重的,
那么重量不一样的西瓜一定在9、10、11、12中)
1、2、3 < 9、10、11
(更重的西瓜一定锁定在了9、10、11中)
9 < 10
(随机选两个西瓜比较,都能得知道哪只西瓜最重)
为了方便同学们理解,林老师又做了一次测试,这里假设3是那只重量不一样的西瓜。
1、2、3、4 < 5、6、7、8
(这里可以知道1、2、3、4中有一个是轻的,
其他都是一样的重量)
1、2、5 > 3、4、6
(把1、2、3、4分为两组,分别为12、34,
然后各搭配5、6中的一个球,
发现3、4中有一个是轻的)
3 < 4
(最后得出结论3是最轻的那个)
下面,林老师向大家介绍了两种比较常用比较简单的排序方法。
第一种是桶排序:
首先看一个简单的场景,假如有这5个数字,65、78、32、98、54,我们如何快速的从小到大或者从大到小排列?
林老师这边准备了10个梯形,分数为0——100分,或者为0——120分,我们把这个分数分成10个分数段,或者12个分数段。
首先我们看一下65分在哪个分数段,就放入那个分数段,以此类推,这样大小就排列出来。
注意桶排序方法,按照范围填进去就行,出现同一个范围的,还是要进行比较。
桶排序的基本思想:
待排序的数据分别放入不同的桶中,这些桶之间其实是有序的。然后在这些桶中将分在里面的数据进行排序。最终就完成了整个序列的排序。
假如我们考试有1000分,数字范围很大,数字很多,这个桶我们该怎么设置?
这个最好一个数字设置一个桶,这个就避免了一个桶里有多个数的存在,这样1001个桶可以装0——1000个不同的数,但是这样很占用空间。
所以桶排序这个方法虽然很快速,很简单,但是范围数字太大之后,它会很占用空间。
第二种是冒泡排序:
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
(动态图演示)
乱序:65、78、32、98、54
排序:32、54、65、78、98
冒泡排序的原理如下:
1、比较相邻的另个数字,如果第一个比第二个大,就交换他们两个。
2、对每一对相邻数字做同样的工作,从开始第一对到结尾的最后一对。
3、针对所有的数字重复以上的步骤,除了最后一个。
4、持续每次对越来越少的数字重复上面的步骤,直到没有任何一对数字需要比较。
研究者花费了数十年的时间研究排序问题,提出了几十甚至上百种排序方法。 有的排序方法“快速便捷”、有的排序方法显得“笨拙而缓慢”,但各自都会在特殊的领域应用到。 林老师在讲座中只提到了一些最基础、最易理解的的排序方法,感兴趣的同学可以了解更多计算机排序的方法哦! 科斗机器人编程 专注于5—17岁青少年STEM综合素质培养 注重挖掘和培养属于下一代 富有创造力的科学人才 加入我们 给每一个孩子 最专业的课堂辅导、最个性化的课后服务【讲座回顾】学会这招,人人都是魔术师
【讲座回顾】生活是张图,但你生活在像素里
【讲座回顾】进击的二进制数!