Java 冒泡排序

86 阅读2分钟

image.png

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

前述

关于为啥写这个我就不阐述了没意义,然后呢关于更深入的时间复杂度 ,空间复杂度我这边也不去多说了,相关专业的同学应该有或多或少的了解,或者是其实我也是一个大致概念:

时间->一个算法的耗时 表示 n2 2n nlogn ...

空间->一个算法的好坏 对于占用的内存空间是很重要的思想 时间复杂度以及空间复杂度是很好的很衡量一个算法的优劣标志

冒泡排序

理论

对于冒泡排序来说就是使用两个for 循环进行数据的比较:对于相邻的两个数据两两比较 如果前面的数据比后面的数据大的话就将前面的数换到后面 ,然后依次处理。当 for i 之后 所有的数据就应该存在顺序了,当然如果原本就是有序的数据 就不需要替换的。然后呢 关于冒泡排序对于本专业的同学 来说应该是不可能不知道的了

简单示例图: bubbleSort.gif

ps : 上图引用于菜鸟教程算法排序 www.runoob.com/w3cnote/ten… 我自己的拙劣图如下: 借助于 录屏工具

image.png 实现

冒泡排序.gif

实践

/***
 * BubblingSorting 测试
 */
@Test
public void bubblingSortingTest() {
    //初始数据
    int[] ints = {1, 3, 5, 8, 2, 9, 7, 10, 6};
    System.out.println("原始数组数据");
    for (int i = 0; i < ints.length; i++) {
        System.out.print(ints[i]+ ",");
    }
    //外层循环控制遍历总次数
    for (int i = 0; i < ints.length - 1; i++) {
        // for 内层一一对比 就是从头开始两两比较  相应终止条件在于上一个的结束
        // 及 这一次 两两比较 length - 1 下一次 最后一个不需要比就是  length - 1 - i 
        //每一次下来都会将最大的数放到最后  当然你可以 放在最前面 这个去取决于你的swap data 
        for (int j = 0; j < ints.length - 1 - i; j++) {
            if (ints[j] > ints[j + 1]) {
                //两个两个进行比较 前面大的数据往后面排
                int tem = ints[j + 1];
                ints[j + 1] = ints[j];
                ints[j] = tem;
            }
        }
    }
    System.out.println("排序之后的数据");
    for (int i = 0; i < ints.length; i++) {
        System.out.print(ints[i] + ",");
    }
}

测试结果显示

image.png

ending

下一篇 选择排序