冒泡排序的实现(Java)

原理:
从第一位开始,依次比较相邻的两个元素,如果右边比左边大,则交换位置,需要注意每轮结束后,序列中最后一个值一定是最大的,所以从第n+1轮开始比较次数依次递减1。
图片展示:
在这里插入图片描述
在这里插入图片描述
依次类推

代码实现:

public static void main(String args[]) {
        int a[] = new int[]{344, 566, 888, 6, 345, 23, 456, 34, 5, 78, 45, 100};
        int temp;//做为中间变量交换数据;
        //冒泡排序
        for (int i = 0; i < a.length - 1; i++) {
            /*
             * 注意:a.length-1是因为比较最后一位元素时,
             * 已经没有与其比较的值,小心数组越界,-i是每经够i轮,比较次数减i
             * */
            for (int j = 0; j < a.length - 1 - i; j++) {
                if (a[j] > a[j + 1]) {
                    temp = a[j];
                    a[j] = a[j + 1]; //交换元素
                    a[j + 1] = temp;
                }
            }
            for (int s = 0; s < a.length; s++) {
                System.out.print(a[s] + " ");
            }
            System.out.println();
        }
    }

运行结果:
344 566 6 345 23 456 34 5 78 45 100 888
344 6 345 23 456 34 5 78 45 100 566 888
6 344 23 345 34 5 78 45 100 456 566 888
6 23 344 34 5 78 45 100 345 456 566 888
6 23 34 5 78 45 100 344 345 456 566 888
6 23 5 34 45 78 100 344 345 456 566 888
6 5 23 34 45 78 100 344 345 456 566 888
5 6 23 34 45 78 100 344 345 456 566 888
5 6 23 34 45 78 100 344 345 456 566 888
5 6 23 34 45 78 100 344 345 456 566 888
5 6 23 34 45 78 100 344 345 456 566 888

本人初次学习,如有错误请指正,谢谢。

参考: https://www.sunofbeach.net/a/1244622772110438400

猜你喜欢

转载自blog.csdn.net/qq_41922235/article/details/107923004