小言_互联网的博客

Java 冒泡排序

261人阅读  评论(0)

Java 冒泡排序

以升序排序为例从上往下,两两之间进行比较,若上面的数比下面的数大,则交换位置,也就是较大者下沉,这样每一轮比较结束都会产生一个本轮次最大值较小的数就会不断向上移动,好像气泡向上漂浮一样。

特点: 升序排序中每一轮比较会把最大的数沉到最底,所以每一轮比较的次数都会比上一轮少一次。

为了方便大家理解,我做了一张动图来演示这一过程。
冒泡排序动画演示:

思路分析:

如上图所示, 黄,绿,蓝,红 分别表示冒泡排序的4轮比较
第一轮[黄色] 比较了4次
第二轮[绿色] 比较了3次
第三轮[蓝色] 比较了2次
第四轮[红色] 比较了1次
根据以上规律,使用两个for循环即可完成冒泡排序
外层for循环控制比较的轮数
内层for循环控制比较的次数

代码示例:

import java.util.Arrays;

public class Demo {
   

    public static void main(String[] args) {
   
        //创建一个数组
        int[] nums = {
   9, 7, 17, 15, 2};
        System.out.println("原始数组:"+ Arrays.toString(nums));
        //创建临时变量
        int temp;
        //外层for循环控制比价的轮数
        for (int i = 0; i <= nums.length - 1; i++) {
   
            //内层for循环控制比较的次数
            for (int j = 0; j < nums.length - 1 - i; j++) {
   
                if (nums[j] > nums[j + 1]) {
   
                    //将较大的数存入temp
                    temp = nums[j];
                    //再将较小的数位置前移
                    nums[j] = nums[j + 1];
                    //较大的数位置后移,完成位置交换
                    nums[j + 1] = temp;
                }
            }
        }

        //打印冒泡排序后的数组
        System.out.println("-----------------------------------");
        System.out.println("冒泡排序完成:"+ Arrays.toString(nums));
    }


}

运行结果:

F:\software\Java\jdk1.8.0_121\bin\java.exe "-javaagent:D:\IntelliJ IDEA 2019.1.4\lib\idea_rt.jar=55864:D:\IntelliJ IDEA 2019.1.4\bin" -Dfile.encoding=UTF-8 -classpath F:\software\Java\jdk1.8.0_121\jre\lib\charsets.jar;F:\software\Java\jdk1.8.0_121\jre\lib\deploy.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\access-bridge-64.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\cldrdata.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\dnsns.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\jaccess.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\jfxrt.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\localedata.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\nashorn.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunec.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunjce_provider.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunmscapi.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\sunpkcs11.jar;F:\software\Java\jdk1.8.0_121\jre\lib\ext\zipfs.jar;F:\software\Java\jdk1.8.0_121\jre\lib\javaws.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jce.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jfr.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jfxswt.jar;F:\software\Java\jdk1.8.0_121\jre\lib\jsse.jar;F:\software\Java\jdk1.8.0_121\jre\lib\management-agent.jar;F:\software\Java\jdk1.8.0_121\jre\lib\plugin.jar;F:\software\Java\jdk1.8.0_121\jre\lib\resources.jar;F:\software\Java\jdk1.8.0_121\jre\lib\rt.jar;D:\ideastudyspace\spring_study\spring-study\spring-study-aop\target\classes;E:\software\MavenRepository\org\aspectj\aspectjweaver\1.9.4\aspectjweaver-1.9.4.jar;E:\software\MavenRepository\org\springframework\spring-webmvc\5.2.0.RELEASE\spring-webmvc-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-aop\5.2.0.RELEASE\spring-aop-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-beans\5.2.0.RELEASE\spring-beans-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-context\5.2.0.RELEASE\spring-context-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-core\5.2.0.RELEASE\spring-core-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-jcl\5.2.0.RELEASE\spring-jcl-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-expression\5.2.0.RELEASE\spring-expression-5.2.0.RELEASE.jar;E:\software\MavenRepository\org\springframework\spring-web\5.2.0.RELEASE\spring-web-5.2.0.RELEASE.jar;E:\software\MavenRepository\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar com.shiguang.test.Demo
原始数组:[9, 7, 17, 15, 2]
-----------------------------------
冒泡排序完成:[2, 7, 9, 15, 17]

Process finished with exit code 0

转载:https://blog.csdn.net/weixin_45333509/article/details/115279821
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场