十大排序算法-冒泡排序

折月煮酒 提交于 2020-01-19 00:31:54

冒泡排序(Selection Sort)

原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

工具类

public class Utils {
    //打印数组
    static void printArr(int[] arrs) {
        for (int x : arrs) {
            System.out.print(x + " ");
        }
    }

    //用于交换数组两个下标的位置
    static void swap(int[] arrs, int x, int y) {
        int temp = arrs[x];
        arrs[x] = arrs[y];
        arrs[y] = temp;
    }
}

逻辑代码

public class BubbleSort {

    public static void main(String[] args) {
        int[] arrs = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};
        int len = arrs.length;

        for (int i = 1; i < len; i++) {
            for (int j = 0; j < len - i; j++) {
                if (arrs[j] > arrs[j + 1]) {
                    Utils.swap(arrs, j, j + 1);
                }
            }
            System.out.print("第" + i + "次排序结果:");
            Utils.printArr(arrs);
            System.out.println();
        }
    }
}

1.结果展示

第1次排序结果:3 38 5 44 15 36 26 27 2 46 4 19 47 48 50
第2次排序结果:3 5 38 15 36 26 27 2 44 4 19 46 47 48 50
第3次排序结果:3 5 15 36 26 27 2 38 4 19 44 46 47 48 50
第4次排序结果:3 5 15 26 27 2 36 4 19 38 44 46 47 48 50
第5次排序结果:3 5 15 26 2 27 4 19 36 38 44 46 47 48 50
第6次排序结果:3 5 15 2 26 4 19 27 36 38 44 46 47 48 50
第7次排序结果:3 5 2 15 4 19 26 27 36 38 44 46 47 48 50
第8次排序结果:3 2 5 4 15 19 26 27 36 38 44 46 47 48 50
第9次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第10次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第11次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第12次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第13次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第14次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50

2.演示图:
演示图片为转载,转载地址:https://www.runoob.com/w3cnote_genre/algorithm
在这里插入图片描述

总结

时间复杂度(平均) 时间复杂度(最好) 时间复杂度(最坏) 空间复杂度 稳定性
O(n²) O(n²) O(n) O(1) 稳定
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!