龙空技术网

数字大小排序(冒泡法原理及源码分享)

按键精灵郭立员 351

前言:

如今各位老铁们对“java冒泡法排序代码从大到小”大概比较关切,姐妹们都想要学习一些“java冒泡法排序代码从大到小”的相关资讯。那么小编也在网摘上搜集了一些关于“java冒泡法排序代码从大到小””的相关资讯,希望姐妹们能喜欢,大家快快来学习一下吧!

昨天在群里看到这样一个问题,因为涉及的知识点之前没讲过,所以今天拿来和大家分享一下,我们先来看看问题:

在讲解这个问题之前,我们先来说一个新的知识点——“冒泡法”排序。

这里我举一个简单的例子来说明什么是冒泡法排序,比方说有这么一个数列

3,2,4,5,1

我想要从小到大去重新排列,依靠简单的数学基础,很容易就可以排列出来,也就是1,2,3,4,5,那么怎么让脚本也具备这个排序能力呢?

实际上我们的12345排序,在大脑中并没有用到什么逻辑,只是单纯的依靠常识或者是思维惯性,对于简单数字这种排序是非常快的,但是对于大量并且复杂的数字来说,我们就很费劲了。

那么怎么有规律的排序呢?这就要用到我说的冒泡法排序了。

32451这个排序,我们要从小到大的重新排序。

那么可以按照位置从前往后依次比较,具体来说,就是先让第1位数字和第2位数字比较,然后让第2位和第3位比较,之后继续比较,直到最后一位数字结束。每次比较之后,要看一下两个数字的大小,如果前面的数字比后面的数字大,那两个数字就需要换位置,否则就可以保持不变。

实际演示一下:

32451

第1位是3,第2位是2,两者比较以后,3>2,按照我们从小到大的要求,需要对换位置,结果就变成了

23451

然后是第2位和第3位比较,也就是3和4比较,符合从小到大的顺序,不用变化。继续比较4和5,也不用动,最后是5和1比较,明显5>1所以需要对调位置。

最终经过第一轮的冒泡法排序,结果就是23415,当然这不是我们想要的最终结果,对于5个数字排序,需要经过4次冒泡法,以我们这个例子来说,剩下3次结果分别是:

23145

21345

12345

可以看到最小的1,每一次都会往前移动,就像冒泡一样,越来越靠前。

写成代码如下图:

接下来回到最开始我们说得群里的提问:

这个问题需要分步来解决:

第一步先计算出给定当前坐标和那10个坐标之间的距离到底是多少。

这个计算在初中数学有讲到,就是两个坐标的距离,假设坐标是(x1,y1),(x2,y2),如果计算这两个点之间的距离,就可以利用勾股定理。

按键精灵里面的代码是:

Sqr((x1-x2) ^ 2 + (y1-y2) ^ 2)

第二步就是把所有距离从小到大的排列,用到刚刚讲的冒泡法,并且取出前三个最小的距离(也就是问题中说得距离最近的3个点)

第三步,比对这3个距离,看看分别对应的是哪个坐标,记录一下这3个坐标的编号

第四步随机获取上面获得的3个坐标编号,然后得到随机的坐标位置。

标签: #java冒泡法排序代码从大到小