• JAVA冒泡排序


    菜鸟总有一段时间在众多技术面前不知如何下手,于是乎輾转反侧夜不能寐,思来想去,心已经乱了,怎么拉回来,要学技术,首先要进入状态, 那就先把状态培养好吧,先进入状态是首要条件,那就把以前的东西理一理吧,一来温故,而来心也平静了许多。 

            int[] a = {0,9,7,2,4,6,3,3,7};
            int num = a.length;
            //嵌套循环只做比较,不做数组改变动作,只有进入if时,才对数组的顺序做改变。
            for (int i = 0; i < num; i++) {
                //从数组的0下标开始遍历
                for (int j = i+1; j < num; j++) {
                    /*依次拿到下标i的值,并依次和下标大于i的值去比较(比如i=0时,我们拿下标为0的值0去和下标为j(i+1))
                    的值9去比较,发现0下标的值>大于0下标的值始终不成立,因此0下标的值始终不会变。
                    第二个循环:i=1下标的值为9,内循环j的值第一次为7,if条件成立,进入条件判断,将下标i的值先用一个临时
                    变量保存起来,然后将j也就是7赋值给下标i,这时下标i=7,j =9;此时数组为{0,7,9,...}进入第二次内循环,这是a[i]=7,依次与a[j]比较
                    9,不满足;2,满足,进入if,将a[i]也就是7复制给临时变量temp,将a[j]也就是2赋值给下标i,此时数组为{0,2,9,7,...}
                    进入内循环的j+1次比较,这时a[i]=2,和后边的任意a[j]比较条件始终不成立,数组不再做改变。
                    第三个循环:i=2此时数组{0,2,9,7,4,....},a[i]=9,和a[j]=7,条件成立,置换位置{0,2,7,9,4,..},进入第二次内循环,
                    a[i]=7,与a[j]=4成立,转换位置{0,2,4,9,7,...},进入第三次内循环,a[i]=4,直到a[j]=3成立,进入置换位置{0,2,3,9,4,..}
                    直到内循环结束,不可能if成立,数组不在做改变。
                    第四个循环:i=3此时数组{0,2,3,7,9,4,...},a[i]=7,只是我们就明白了,每一次内循环都是把下标i后的最小的值替换到
                    下标i的位置,如果没有就维持现有数组不变进入下一个循环,直到i<num不成立,循环结束,整理出结果!
                     */
                    if (a[i] >a[j]) {
                        int temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                }
            }
            System.out.println("@@@"+ Arrays.toString(a));

    这是升序,降序把>改<即可!

  • 相关阅读:
    Linux中配置别名
    Linux下的IO监控与分析
    RHEL6 Systemtap 安装笔记
    记一次多事件绑定中自己给自己设置的坑——click,dblclick,mousedown,mousemove,mouseup
    springboot打jar获取不到static静态资源文件问题
    关于springboot默认日志框架Slf4j+logback,自定义Appender问题
    spring 时间格式问题
    springboot 部署到tomcat,获取根路径问题。空格变为%20
    前后端分离 vue+springboot 跨域 session+cookie失效问题
    springboot 部署到tomcat中,项目总是重新部署
  • 原文地址:https://www.cnblogs.com/ckxlovejava/p/8678712.html
Copyright © 2020-2023  润新知