选择排序:就是对给定的数组数据进行从大到小或从小到大的顺序排好,而内思路则是比如讲第一个元素和后面所有元素进行对比,然后将最大或最小的和头角标兑换位置,然后再用第二个元素和剩下的依次对比,然后再兑换位置,如此循环。所以在这种选择排序,咱们需要用到嵌套循环和判断语句。
具体java数组选择排序案例例题如下:
对给定数组进行排序
{6,7,3,8,4,1}
排序的次数:比如第一次5次,【第一次排序对比次数=数组长度arr.length-1】。第二次4次……大圈套小圈原理(嵌套循环)
*****
****
***
**
*
如图所示
因为操作的是同一个数组,所以函数块类型为void
从代码和编译结果可以看出,内循环结束一次,最值出现在头角标位置上
这是一个嵌套式的内存循环
所以第一层for循环中
x表示数组角标,x=0;从第一角标开始
x<arr.length表示最后一个角标,然而我们对比的话,最后一个角标都是和前面对比过的,所以这里可以直接最后一个角标不用对比所以,可以arr.length-1
而内循环for则表示使数组前一角标和后一角标对比x+1
然后在内内循环里面在嵌套一个if判断流程语句,使用咱们之前学习过的变量数据换位置的方式,采用临时变量对最值进行换位置。
在函数功能块定义完成后,咱们为了验证代码和思路的正确性,再定义一个可以复用的函数功能块,来遍历数组。这个函数遍历功能块即可以对还没有排序的数组进行遍历打印,又可以对调用了排序函数功能快的数组进行遍历打印。
下面咱们再来了解下:冒泡排序
冒泡排序在咱们面试中比较常见哦~~~哈哈哈
冒泡排序:相邻的两个元素进行比较,如果符合条件换位。和选择排序的道理类型,只不过,选择排序的最值从左边开始而冒泡排序的最值从右边开始
冒泡排序和选择排序一样,每一次循环比较都比数组元素长度少1.arr.length-1
冒泡排序例题案例如下图:
排序其实就是算法,基本上各种排序的基本原理差不多,只不过是比较的干事有区别,所以就涉及到效率的问题。
排序有有N多种,比如果插入啊,插入啊咱们没有必要一一去了解,讲一两个,主要是熟悉这里面的一些原理,了解这些算法得到原理就可以了。
特别注意,排序中最快的方法是希尔排序;
希尔排序是三层循环加上位运算来排的序。这是最快的,最有效率的,但是我们一般不需要去使用它和了解他,但是你要觉着想了解更多可以多多了解下哦,毕竟多学无害嘛,或许有一天进阶到需要用到呢,是吧~~哈哈,总是希望你比我更强吧,程序”猿”
上面的例题中涉及到选择排序和冒泡排序,其实咱们可以有N多种解题的思路,而这里咱们只选择了一种,跟多的,有兴趣吗?点击评论区,发表你的思路,和志同道合的java前进的朋友一起分享吧~~^^
在后面如果代码和数据比较多的时候咱们就该考虑性能和效率问题了,咱们今天分享的是比较低的,唯一的好处就是代码好记丫;
为什么说性能低呢?
因为:每一次符合条件,咱们都会在数组当中对数组元素的位置的置换而堆内存中换位置比较消耗资源,但这消耗的资源也不是特别的大;如果说他们需要换位置的话我们先不置换他们的位置?我们将他们需要换位置的角标和元素在栈内存中定义两个变量先记录下来,当我们先对比完后,我们取最终需要换位置的值,并把它记录下来;
简而言之,就是在堆内存中频繁的换位置,转移到占内存当中。
但是太深的咱们也不用记得,因为java语言就拍咱们不会排序,所以java给我们提供了一个功能improtjava.util.*这个功能在咱们真实开发中应用
既然java有这个排序功能,咱们为什么还要去理会什么冒泡啊选择排序什么的?理解这些可以明白排序的一些算法,而且咱们既然是从程序“猿”出发,有些东西咱们还是要理解并且会的,你说是不?!哈哈~~~
真实开发要求的效率和便捷,所以一般咱们会使用java内置的。
以上就是长沙一度软件培训java学院小编介绍的“Java零基础入门教程:选择排序冒泡排序和java内置排序”的内容,希望对大家有帮助,如有疑问,请在线咨询,有专业老师随时为你服务。