1、-------寄语
对于初学JAVA的同学来说,排序是在陌生不过的一个基础题了。但是由于自己刚刚步入学习JAVA的世界,很多东西不能很好的理解,导致自己虽然可以敲出代码或者大致能够想明白,
但是对于解决问题的思想并没有很好的深入。(其实一开始学习也没必要太刨根问底,等到自己有一定的基础了,有时间了再研究一下。抱着研究的态度感觉会更好一点。其实大部分目前的
开发者都是经过了一段时间的培训,在培训的过程中,课程速度特别快,有时候我们必须要“不拘小节”,掌握培训中的主流知识才是明智之举。如果你正在培训,请记住,抓住学习主线。)
2、-------分析+代码
目前对于数组的排序有主要的两种,一种是选择排序,一种是冒泡排序。当然大学学过数据结构的知道,还有一些其他的排序,这里就不说明了,有时间自己上网查查。其实排序在开发中并不常用,
我们学习它是学一种思想,以后的业务逻辑中可能会用到,可能会有相似的逻辑或者培养了我们这种思想,我们今后可以举一反三。不要为了题目而题目,说了一些题外话,不好意思,言归正传。
(1)选择排序(从小到大)
1)思想:选择排序,让数组中的每一个数,依次与后面的数进行比较,如果前面的数大于后面的数,就进行位置的交换。这种说法或许有些人看不明白。换个说法,选择排序:第一个数依次与
后面的数比较,第一次比较完之后最小的数在最前面 。
不理解的看看图应该就差不多了,真不明白就和明白的人讨论讨论吧。
2)代码
import java.util.Arrays;
/** * 练习排序-选择排序 * @author Administrator * */ public class Dome2 { public static void main(String[] args) { //数组 int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8}; //第一次循环,是确定一个数依次和后面数的比较的数。 for (int i = 0; i < arr.length -1 ; i++) { //这个是和第一个数的比较的数 for (int j = i+1; j < arr.length; j++) { //定义一个临时的变量,用来交换变量 int temp ; if(arr[i]>arr[j]){ temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } //打印最后的排序结果 System.out.println(Arrays.toString(arr)); } }(2)冒泡排序(从小到大)
1)思想:相邻两个数进行比较,第一波比较后,最大的数在最后。(每比较完之后,后面的数就减少一个比较 )
2)代码
import java.util.Arrays;
/** * 练习排序--冒泡排序 * @author Administrator * */ public class Dome2 { public static void main(String[] args) { //数组 int[] arr = {5,3,7,2,6,7,6,5,4,1,9,8}; //外部循环 for(int i=0;i<arr.length-1;i++){ //相连两个数的索引是利用内部循环 for(int index=0;index<arr.length-1;index++){ //同样利用中间变量,注意区分与选择排序的区分 if(arr[index]>arr[index+1]){ int temp=arr[index]; arr[index]=arr[index+1]; arr[index+1]=temp; } } } System.out.println(Arrays.toString(arr)); } }