JAVA-初步认识-第五章-数组-常见操作-选择排序
一. 排序
元素有很多的情况下,我们都希望元素按照指定的方式有一个顺序,比如说由小到大。排序的方式有很多种,我们讲解其中一种。
例子:
对上面的数组中的元素排个序,从小到大。这个想不出来,之前谈论的是两个数比较,得到大的数。
听了视频的一点讲解,突然有了思路,角标0和角标1进行比较后,将元素的大小做了调换,再继续将角标0和剩余角标的元素进行比较,最终保证角标0中的元素是所有角标中最小的。接着重复将角标1和后面角标中的元素进行比较,再得出一个最小的值,如此往复。这里排序的时候,有一点是要注意的,角标和空格位始终是从0到5的,如果要求排序的话,里面的元素是不断要调换位置的。不要僵硬地以为元素的角标号是固定不变的,变量想要获得元素的数据,只需要将其角标号给变量即可,至于角标号变化了,那就给予变化后的角标号即可,并不影响赋值,同时数组存储的依旧是那些值,没有变化。
→本节的例子还是从两个数的大小比较演变而来。这也验证了一点,现象的背后总有规律,什么东西都不可能凭空出现的。
→在数组的应用中,元素和角标号两者很重要,同时需要注意。
对于上面的例子,角标的个数是明确的,也比较少,在编写源代码的时候比较好写。延伸一下,如果数组中数据的个数比较多,该怎么得到一个从小到大的排序?那可能要借助循环结构的自动功能。为什么这么说?我目前没有看到,视频的解题源代码,但是,我的想法是,五个角标的元素排序问题,我设置五个独立的循环结构比较。五个独立的,复用性不好,应该将其整合起来。
→→需要遍历数组,遍历数组是什么意思?遍历好像就是将所有元素都来操作一遍。
大圈套小圈思想。
自己的解题过程
思路的第一句不对,为什么选择循环嵌套结构语句没有交代。对于内循环的第二个表达式也写错了,应该写成y<arr.length
这里要明白角标为arr.length和arr.length-1都是分别代表哪些位置上的数据。
视频解题