arraylist从大到小排序_【讲座回顾】天平和砝码——排序算法大揭秘!

科斗机器人编程

每周五晚轻松开讲,做最新鲜最有趣的科技教育讲座。

a0afab74855fc5f09e4d9b6d3c6e4352.gif

在我们的日常生活中,排序在很多场合都起到了不可替代的作用。(如将电话簿中的姓名、字典、图书索引、图书馆或书架上的书、邮递员包裹里的信件、班级名册、 地址簿、计算机中的文件列表)

排序能够使我们快速进行查找,凸显重要的内容,而无序引起的常见的问题是人们需要花费大量时间来查找目标。

本课重点部分提要

通过天平和砝码的配合,让天平两端的重量一模一样,就能达到一种平衡。所以我们要去通过选择合适的砝码来测得我们物体的重量。

砝码分为很多重量(有轻有重),本次讲座主要通过学习一些很好的排序方法,去进行这个砝码重量的排列。

0341fb3d0c889336c48e00bf974b7249.png

我们先来看一下这样的小实验:

林老师做了一个简单的动画,把砝码换成了西瓜,有一杆天平,有12只西瓜(编号1~12)方便称呼。

问题是:这12只西瓜其中有11只西瓜是一摸一样的重量,我们要找出那个重量不一样西瓜?

(正确答案是3次,有没有同学知道怎么运用三次机会把它找到呢?)

这里有一个小方法,林老师用了电脑的小程序来模拟比较重量。

c592c751ea4aadaae760f6ebb6c5bfd5.png

首先,两边各选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是那只重量不一样的西瓜。

1de0dcee5a78609bc3f6bdbde0d060af.png

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,我们如何快速的从小到大或者从大到小排列?

b3f4ff3c4b049cd093f9188abc971ca4.png

林老师这边准备了10个梯形,分数为0——100分,或者为0——120分,我们把这个分数分成10个分数段,或者12个分数段。

首先我们看一下65分在哪个分数段,就放入那个分数段,以此类推,这样大小就排列出来。

注意桶排序方法,按照范围填进去就行,出现同一个范围的,还是要进行比较。

桶排序的基本思想:

待排序的数据分别放入不同的桶中,这些桶之间其实是有序的。然后在这些桶中将分在里面的数据进行排序。最终就完成了整个序列的排序。

假如我们考试有1000分,数字范围很大,数字很多,这个桶我们该怎么设置?

abc4eb2867ede3e2851ffe17279ad68e.png

这个最好一个数字设置一个桶,这个就避免了一个桶里有多个数的存在,这样1001个桶可以装0——1000个不同的数,但是这样很占用空间。

所以桶排序这个方法虽然很快速,很简单,但是范围数字太大之后,它会很占用空间。

第二种是冒泡排序:

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

34b19c732fa8414b4480829a2469e0fe.gif

(动态图演示)

乱序:65、78、32、98、54

排序:32、54、65、78、98

冒泡排序的原理如下:

1、比较相邻的另个数字,如果第一个比第二个大,就交换他们两个。

2、对每一对相邻数字做同样的工作,从开始第一对到结尾的最后一对。

3、针对所有的数字重复以上的步骤,除了最后一个。

4、持续每次对越来越少的数字重复上面的步骤,直到没有任何一对数字需要比较。

研究者花费了数十年的时间研究排序问题,提出了几十甚至上百种排序方法。 有的排序方法“快速便捷”、有的排序方法显得“笨拙而缓慢”,但各自都会在特殊的领域应用到。 林老师在讲座中只提到了一些最基础、最易理解的的排序方法,感兴趣的同学可以了解更多计算机排序的方法哦! ccac7b2df782b0264dc3b7aaad852c5f.gif 科斗机器人编程 专注于5—17岁青少年STEM综合素质培养 注重挖掘和培养属于下一代 富有创造力的科学人才 加入我们 给每一个孩子 最专业的课堂辅导、最个性化的课后服务 824d6e8710e26a40bb39fcf40ccc03c7.gif 6295ebfb2106a2e3dde86ed02ebe6d45.png

【讲座回顾】学会这招,人人都是魔术师

040e89482be50e447c53e90d4daefd1c.png

【讲座回顾】生活是张图,但你生活在像素里

102ba73688147c2ca201a55aab215591.png

【讲座回顾】进击的二进制数!

aa16128434039ca56b6b82c50afb0b8e.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值