冒泡排序

2020-08-03  本文已影响0人  cg1991

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

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

1.1 概述

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

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

1.2 描述

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
上一篇下一篇

猜你喜欢

热点阅读