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)采用降序的方式如何写代码;

  • 相关阅读:
    vm串口问题
    web测试和一般的应用程序测试的主要区别
    测试点总结<转>
    【转】.net正则表达式基础学习
    QTP场景恢复详解
    QTP之检查点实例操作(转载)
    Java使用JNI调用第三方dll动态链接库
    Android 2.2播放mp4视频提示“是无效的流媒体”的问题
    FileSystemWatch 对文件的监测 修改 创建 删除 并写入日志
    WinForm程序开机自动运行
  • 原文地址:https://www.cnblogs.com/maohaitao/p/11319547.html
Copyright © 2011-2022 走看看