A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© boom_pm2.5 中级黑马   /  2016-11-14 00:01  /  783 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

废话不多说了,直接上题:
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

3 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马