zoukankan      html  css  js  c++  java
  • 排序算法之冒泡排序

    考点1:交换两个数,不借助第三个变量,使用异或操作,异或规则:0^0=0;   0^1=1;   1^0=1;   1^1=0;

    考点2:冒泡排序的原理:从左往右两两比较大小,小的放左边,每次循环找出当前趟的最大值,再比较这个数之前的序列,一直循环到只有两个数字,比较完这两个数的大小之后,冒泡排序结束;

    上代码:

    package sort;
    
    import org.junit.Test;
    
    /**
     * @ClassName: BubbleSort
     * @Description: 冒泡排序
     *                原理:从左往右两两比较大小,小的放左边,每次
     *                循环找出当前趟的最大值,再比较这个数之前的序
     *                列,一直循环到只有两个数字,比较完这两个数的
     *                大小之后,冒泡排序结束;
     * @Author: hunterm
     * @Date: 2019/8/8 9:36
     * @Version: 1.0
     */
    public class BubbleSort {
        @Test
         public void test(){
            int[] array = {5,6,2,0,3,99,5,52,31,1,4};
            int[] bub = new BubbleSort().bubble(array);
            for(int i = 0;i < bub.length;i++){
                System.out.println(bub[i]);
            }
        }
        public int[] bubble(int[] array){
            for(int i = 0;i < array.length-1;i++){
                for(int j = 0;j < array.length-i-1;j++) {
                    if (array[j] > array[j + 1]) {
                        array[j] = array[j] ^ array[j + 1];
                        array[j + 1] = array[j] ^ array[j + 1];
                        array[j] = array[j] ^ array[j + 1];
                    }
                }
            }
            return array;
        }
    }
    

      总结:不要背代码,只要你明白原理之后,各种方式都可以写出来,比如:1)每次循环找出序列中最小的数放在最前面,知道比较完最后两个数字的大小之后,冒泡结束;2)采用降序的方式如何写代码;

  • 相关阅读:
    SQL强化
    JSP深入
    会话Session和cookie
    SQL快速入门
    小程序 + node koa2 session存储验证码碰到最大的坑,(喜极而泣 /狗头)
    mongoose 数据如果存在更新 不存在插入
    vue 相同路由不同参数跳转时,不刷新
    因为自己的小服务器读取太慢,弄一个本地的mysql
    git 提交代码不想包括那个文件,比如node_modules
    js中 ! 和 !!
  • 原文地址:https://www.cnblogs.com/maohaitao/p/11319547.html
Copyright © 2011-2022 走看看