算法之冒泡排序(Bubble Sort)

算法描述
⚫ 比较相邻的元素。如果第一个比第二个大,就交换它们两个;
⚫ 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
⚫ 针对所有的元素重复以上的步骤,除了最后一个;
⚫ 重复步骤 1~3,直到排序完成。

排序方法 时间复杂度(平均) 时间复杂度(最坏) 时间复杂度(最好) 空间复杂度 稳定性
冒泡排序 O(n²) O(n²) O(n) O(1) 稳定

如果两个元素相等,不会再交换位置,所以冒泡排序是一种稳定排序算法。

代码实现

import java.util.Arrays;

public class BubbleSort {

    public static void bubbleSort(int[] data) {

        int arrayLength = data.length;

        for (int i = 1; i < arrayLength; i++) {  //第i次排序

            for (int j = 0; j < arrayLength - i; j++) {  //从索引为j的数开始
            	   //三次异或完成交换
                if (data[j] > data[j + 1]) {
                    data[j] = data[j] ^ data[j + 1];
                    data[j + 1] = data[j] ^ data[j + 1];
                    data[j] = data[j] ^ data[j + 1];
                }
            }

            System.out.println("第" + i + "次排序: \n" + Arrays.toString(data));
        }
    }

    public static void main(String[] args) {

        int[] data = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};

        System.out.println("排序之前: \n" + Arrays.toString(data));

        bubbleSort(data);

        System.out.println("排序之后: \n" + Arrays.toString(data));
    }
}

效果展示
算法之冒泡排序(Bubble Sort)_第1张图片

你可能感兴趣的:(算法之冒泡排序(Bubble Sort))