黑马程序员技术交流社区

标题: 论两种排序的使用细节 [打印本页]

作者: boom_pm2.5    时间: 2016-11-14 00:01
标题: 论两种排序的使用细节
废话不多说了,直接上题:
public class bubbleSort_Test {
        public static void main(String[] args) {
                int [] arr = {98,54,22,15,36,99,45};//定义一个字符数组
                /*demo1(arr);
                demo2(arr);*/
                bubbleSort2(arr);
                demo2(arr);
        }
               
        /*
         * 冒泡排序
         * 1,返回值类型,void
         * 2,参数列表,int[] arr
         *
         *         第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次
                第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次
                第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次
                第四次:arr[0]与arr[1]比较1次
         */
        private static void demo1(int[] arr) {
                for (int i = 0; i < arr.length-1; i++) {//外层循环.
                        for (int j = 0; j < arr.length-1-i; j++) {
                                if (arr[j]>arr[j+1]) {
                                        /*int temp = arr[j+1];
                                        arr[j+1]=arr[j];
                                        arr[j]=temp;*/   
                                        //重复代码提出去
                                        change(arr,j,j+1);
                                }
                        }
                }
        }
        //change 方法 只对  数组中某两个 元素进行调换.
        private static void change(int []arr , int i ,int j ) {
                int temp = arr[j];
                arr[j]= arr;
                arr = temp;       
               
        }
       
        private static void demo2(int[] arr) {
                for (int i = 0; i < arr.length; i++) {
                        System.out.print(arr+" ");
                }
        }
        //-------------------------------------------------------
        /*
         * 选择排序
         * 1,返回值类型void
         * 2,参数列表int[] arr
         *
         *         第一次:arr[0]分别与arr[1-4]比较,比较4次
                第二次:arr[1]分别与arr[2-4]比较,比较3次
                第三次:arr[2]分别与arr[3-4]比较,比较2次
                第四次:arr[3]与arr[4]比较,比较1次
         */
        public static void bubbleSort2(int []arr) {
                for (int i = 0; i < arr.length-1; i++) {
                        for (int j = i; j < arr.length; j++) {
                                if (arr>arr[j]) {
                                        change(arr,i,j);
                                }
                        }
                }
        }
}

重点:   两种方法可以完成 对字符数组中的元素进行排序.
第一种是 冒泡,注意For循环中的  关系,千万不能弄混.
第二种是  选择 排序, 和 冒泡排序差不太多,主要是细节问题,
自己总结了一下,  基本上来说,    两者的关系很相像,都是从小到大的排序,
只不过. 就是一个是先把小的拿出来,一个是吧大的拿出来. 很不一样
最后再说两句:
爱生活爱JAVA


作者: 碧海云天    时间: 2016-11-14 00:16
不会。。。

作者: 17862971894    时间: 2016-11-14 00:49
楼主总结的不错

作者: leojr    时间: 2016-11-14 10:59
再来个快速排序玩玩





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2