前言:
如今各位老铁们对“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冒泡法排序代码从大到小