黑马程序员技术交流社区

标题: 冒泡排序 希望嫩个帮到大家 [打印本页]

作者: 陈熙    时间: 2015-8-14 22:07
标题: 冒泡排序 希望嫩个帮到大家
public class BubbleSortDemo {
       
        public static void main(String[] args) {
               
                // 创建一个数组
                int[] arr = { 24, 69, 80, 57, 13 } ;
                System.out.print("排序前: ");
                print(arr);
               
                // 排序
                bubbleSort2(arr);
               
                System.out.print("排序后: ");
                print(arr);
               
        }
       
        /**
         * 冒泡排序
         * @param arr
         */
        public static void bubbleSort2(int[] arr){
               
                for(int y = 0 ; y < arr.length - 1 ; y++){
                        for(int x = 0 ; x < arr.length - 1 - y; x++){
                                if(arr[x + 1] < arr[x]){
                                        int temp = arr[x] ;
                                        arr[x] = arr[x + 1];
                                        arr[x + 1 ] = temp ;
                                }
                        }
                }
               
        }
       
        /**
         * 冒泡排序推导过程
         * @param arr
         */
        public static void bubbleSort1(int[] arr){
               
                // 第一次排序
                // arr.length - 1: -1的目的就是防止数组角标越界
                for(int x = 0 ; x < arr.length - 1 - 0; x++){
                        if(arr[x + 1] < arr[x]){
                                int temp = arr[x] ;
                                arr[x] = arr[x + 1];
                                arr[x + 1 ] = temp ;
                        }
                }
               
                // 第二次
                for(int x = 0 ; x < arr.length - 1 - 1; x++){
                        if(arr[x + 1] < arr[x]){
                                int temp = arr[x] ;
                                arr[x] = arr[x + 1];
                                arr[x + 1 ] = temp ;
                        }
                }
               
                // 第三次
                for(int x = 0 ; x < arr.length - 1 - 2; x++){
                        if(arr[x + 1] < arr[x]){
                                int temp = arr[x] ;
                                arr[x] = arr[x + 1];
                                arr[x + 1 ] = temp ;
                        }
                }
               
                // 第四次
                for(int x = 0 ; x < arr.length - 1 - 3; x++){
                        if(arr[x + 1] < arr[x]){
                                int temp = arr[x] ;
                                arr[x] = arr[x + 1];
                                arr[x + 1 ] = temp ;
                        }
                }
               
        }
       
        /**
         * 遍历
         * @param arr
         */
        public static void print(int[] arr){
                System.out.print("[");
                for(int x = 0 ; x < arr.length ; x++){
                        if(x == arr.length - 1){
                                System.out.println(arr[x] + "]");
                        }else {
                                System.out.print(arr[x] + ", ");
                        }
                }
        }

}

作者: 奇峰    时间: 2015-8-16 15:13
冒泡很有用,搞不好笔试会考。
作者: 周博文    时间: 2015-8-16 15:19
学习了。
作者: yangkai69    时间: 2015-8-16 16:29
很棒的总结!
作者: 迷茫不堪的年纪    时间: 2015-10-16 02:53
  ==     和  != 的意思一样?
作者: 五月天的倔强    时间: 2015-10-16 07:45
老毕视频里说:冒泡排序的方法要记住,面试和笔试会考;好像说开发时用的不多?而是其他比较容易想的方法?
作者: liuqianfly    时间: 2015-10-16 09:28
学习学习!




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