美文网首页
冒泡排序

冒泡排序

作者: cg1991 | 来源:发表于2020-08-03 07:42 被阅读0次

    个人主页:https://chengang.plus/

    文章将会同步到个人微信公众号:Android部落格

    1.1 概述

    排序使用了两层循环,第一层从0到数组大小;第二层从0开始,依次比较index后一个和前一个的大小,只要后面的元素比前面元素大,就把它们交换过来。

    走访数列的工作是重复地进行直到没有再需要交换,直到排序完成。

    1.2 描述

    • 比较相邻的元素。如果第一个比第二个大,就交换它们两个;

    • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

    • 针对所有的元素重复以上的步骤,除了最后一个;

    • 重复步骤1~3,直到排序完成。

    1.3 代码

    属于比较排序,时间复杂度为n的平方。

    代码如下:

    public class BubbleSort {
        //    private static int[] number = {5, 8, 3, 6, 9, 10, 34, 1, 7, 12, 65, 4, 23, 2, 16, 15, 76, 56, 8};
        private static int[] number = {5, 8, 3, 6, 9, 10, 34, 1, 7, 6};
        private static String TAG = "BubbleSort";
    
        public static void bubbleSort() {
            int size = number.length;
            int compareCount = 1;
            Log.d(TAG, "sorted compare index 0 is " + Arrays.toString(number));
            for (int i = 0; i < size - 1; i++) {
                for (int j = 0; j < size - 1 - i; j++) {
                    if (number[j + 1] < number[j]) {
                        int temp = number[j + 1];
                        number[j + 1] = number[j];
                        number[j] = temp;
                        Log.d(TAG, "sorted compare index " + (compareCount++) + " is " + Arrays.toString(number));
                    }
                }
            }
            for (int temp : number) {
                Log.d(TAG, "sorted number is:" + temp);
            }
        }
    }
    

    1.4 总结

    时间复杂度为n的平方,空间复杂度为1。

    稳定排序。

    示意图如下:

    冒泡排序.jpg

    相关文章

      网友评论

          本文标题:冒泡排序

          本文链接:https://www.haomeiwen.com/subject/biqvrktx.html