美文网首页
冒泡排序与选择排序

冒泡排序与选择排序

作者: webcode | 来源:发表于2018-12-07 15:43 被阅读0次

    冒泡排序

    冒泡排序原理:比较相邻的元素,较小的放到前面,较大的放到后面

    要理解冒泡排序首先要理解两个元素互换

    例如

    int a = 10;
    int b = 20;
    

    如何才能让a = 20;b = 10;如下代码是不能实现的

    int a = 10;
    int b = 20;
    a = b;//首先b = 20;然后把b的值赋值给a,所以a = 20;
    b = a;//这是a = 20; 然后把a的值20赋值给b。这个时候b的值也是20
    

    思考:如果家里有两个瓶子,1号瓶子装水,2号瓶子装油,那么如何才能让1号瓶子装油,2号瓶子装水
    解答:再找一个3号空瓶子,首先把1号瓶子的水倒入3号瓶子,把2号瓶子的油倒入1号瓶子,最后吧3号瓶子的水倒入2号瓶子;这样是不是就完成了互换了
    所以

    int a = 10;
    int b = 20;
    int c;
    c = a; 
    a = b;
    b = c
    

    -冒泡排序的每一次内层循环都会找到最小值

    /**
         * 冒泡排序
         * @param args
         * 
         * 6,2,4,1,5,9
         * 第一次排序:
         *  2,4,1,5,6,9 5
         * 1    5
         * 二次
         * 2,1,4,5,6, 9  4
         * 
         * 2    4
         * 三次
         * 1,2,4,5          3
         * 3    3
         * 
         * 4    3
         * 
         * 五次
         * 5    1               
         *   
         * 
         *  第一次排序:结果就是找到最大值
         * 2            第2
         * 3            3
         * ……
         * 5            5
         * 
         * 
         * 
         * 5,4,3,2,1
         * 1    
         * 4,3,2,1,5
         * 
         * 2
         * 3,2,1,4,5
         * 
         * 3
         * 2,1,3,4,5
         * 
         * 4
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int [] arr = new int[]{5,4,3,2,1};
            
    //      外层循环是排序的次数 (i+1)
            for(int i = 0; i < arr.length - 1; i ++){
                //内层循环,相当于排序一次
    //                  j = 0  j =4    j < 5
                for(int j = 0; j < arr.length - 1 - i; j ++){
    //              实现的就是相邻元素进行比较,大的放到后面,小的放到前面
                    if(arr[j] > arr[j+1]){
    //                  交换位置
                        int temp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = temp;
                    }
                }
            }
            
            
            for(int i = 0; i < arr.length; i ++){
                System.out.print(arr[i]+"\t");
            }
        }
    

    选择排序

    选择排序的基本思想是将指定的排序位置与其他数组元素分别对比,如果满足条件就交换元素值

    image.png
    public static void main(String[] args){
            int arr[] = {6,5,4,3,2,1,0};
            /**
             * 第一次拿下标为0的和后面的元素依次进行比较
             * 1,6,5,2,4,9
             * 
             * 继续拿下标为1
             * 1 ,2,6,5
             * 
             * 继续拿下标为2
             * 
             * 继续拿下标为4 =   arr.length -2
             */
            for(int i = 0; i < arr.length - 1; i ++){
                for(int j = i + 1; j < arr.length; j ++){
                    if(arr[i] > arr[j]){
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;      
                    }
                }
            }
            
            /**
             * 数组名[下标]
             */
            for(int i=0;i<arr.length; i++){
                System.out.print(arr[i]+"\t");
            }
    

    如果明白了,请赞赏,1分也是爱。
    如果还是不理解,看来需要视频讲解以及面对面一对一讲解了(视频+源码 5元)
    联系方式QQ:1718202383
    可接应届毕业生论文项目
    可接外包项目


    image.png

    相关文章

      网友评论

          本文标题:冒泡排序与选择排序

          本文链接:https://www.haomeiwen.com/subject/mwbthqtx.html