每天一个算法(1):冒泡排序(java)

冒泡排序

原理 : 依次比较相邻的两个数,将小数放在前面,大数放在后面。
复杂度: 最差–> O(n2) / 平均–> O(n2) / 稳定性–> 稳定

示意图 :

原数组:[10, 3, 2, 1, 0, 5, 4, 7, 8, 9]
第1次:[3, 10, 2, 1, 0, 5, 4, 7, 8, 9]
第2次:[3, 2, 10, 1, 0, 5, 4, 7, 8, 9]
第3次:[2, 3, 1, 10, 0, 5, 4, 7, 8, 9]
第4次:[2, 1, 3, 0, 10, 5, 4, 7, 8, 9]
第5次:[1, 2, 0, 3, 5, 10, 4, 7, 8, 9]
第6次:[1, 0, 2, 3, 5, 4, 10, 7, 8, 9]
第7次:[0, 1, 2, 3, 4, 5, 7, 10, 8, 9]
第8次:[0, 1, 2, 3, 4, 5, 7, 8, 10, 9]
第9次:[0, 1, 2, 3, 4, 5, 7, 8, 9, 10]
我们观察 “10 “ 这个数字是不是就像一个气泡慢慢的浮上来了呢!很形象是吧!
代码

public class BubbleSort {

    public static void bubble_sort(int arr[]) {
        for(int i = 1; i < arr.length; i++) {
            int temp = 0;
            for(int j = 1; j <= i; j++) {
                if(arr[j-1] > arr[j]) {
                    temp = arr[j-1];
                    arr[j-1] = arr[j];
                    arr[j] = temp;
                }
            }
            System.out.print("第" + i + "次:");
            System.out.println(Arrays.toString(arr));
        }
    }

    public static void main(String[] args) {
        int arr[] = {10, 3, 2, 1, 0, 5, 4, 7, 8, 9};
        // int arr[] = new int[] {10, 3, 2, 1, 0, 5, 4, 7, 8, 9};
        System.out.println("原数组:");
        System.out.println(Arrays.toString(arr));
        BubbleSort.bubble_sort(arr);
        System.out.println("现数组:");
        System.out.println(Arrays.toString(arr));
    }

}

结果

原数组:
[10, 3, 2, 1, 0, 5, 4, 7, 8, 9]
第1次:[3, 10, 2, 1, 0, 5, 4, 7, 8, 9]
第2次:[3, 2, 10, 1, 0, 5, 4, 7, 8, 9]
第3次:[2, 3, 1, 10, 0, 5, 4, 7, 8, 9]
第4次:[2, 1, 3, 0, 10, 5, 4, 7, 8, 9]
第5次:[1, 2, 0, 3, 5, 10, 4, 7, 8, 9]
第6次:[1, 0, 2, 3, 5, 4, 10, 7, 8, 9]
第7次:[0, 1, 2, 3, 4, 5, 7, 10, 8, 9]
第8次:[0, 1, 2, 3, 4, 5, 7, 8, 10, 9]
第9次:[0, 1, 2, 3, 4, 5, 7, 8, 9, 10]
现数组:
[0, 1, 2, 3, 4, 5, 7, 8, 9, 10]

Process finished with exit code 0

附加

数组的初始化:

// 直接初始化
int arr[] = {10, 3, 2, 1, 0, 5, 4, 7, 8, 9};
int arr[] = new int[] {10, 3, 2, 1, 0, 5, 4, 7, 8, 9};

//先声明在初始化
int[] a = new int[2];   //需要指定数组的长度
a[0] = 1;
a[1] = 2;

猜你喜欢

转载自blog.csdn.net/yhflyl/article/details/80837121