数组排序(选择排序和冒泡排序)

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));
                 }
             }

            

posted @ 2016-12-23 12:25  陶庭开  阅读(43214)  评论(3编辑  收藏  举报