排序算法之冒泡排序(1)

1. 冒泡排序的原理

冒泡排序的思想就是:假設有n個數據 循環n次 兩兩比較 例如 1 3 4 2 7
1與3 先比較 小的在前大的在後 是順序 所以不需要變,
指針後移 3與4相比 不變指針後移
4與2相比 反序 交換位置 變爲2 4 也就是數組序列變爲 1 3 2 4 7
指針後移 4與7比 正序 不變
這就是第一次排序 找到了最大的值放在最後
接下來還是這麼比較 就找到了第二大的 放在倒數第二的位置 以此類推

如圖:
在這裏插入圖片描述

2.代碼如下

package com.study;

public class Sort {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5};
        Sort.mp(a);

        for (int arry:a) {
            System.out.println(arry);
        }
    }

    //冒泡
     public static void  mp(int[] a){
        for (int i = 0;i < a.length-1;i++){
            for (int j = 1;j < a.length;j++){
                if(a[j-1] > a[j]){
                    int temp = a[j];
                    a[j] = a[j-1];
                    a[j-1] = temp;
                }
            }
        }
    }
}

3. 相關知識

  1. 時間複雜度時候O(n^2)
  2. 冒泡排序是穩定的排序算法
    所謂穩定 就是假設序列 12234 有相等的值2 經過排序後 a[1] 的2還是原來a[1]的2 不與a[2]的2 交換位置
  3. 空間複雜度是O(1)
  4. 冒泡排序是交換排序

4.優化

上述序列如果是有序的 但是冒泡排序還需要比較n遍,改進思路 設置一個變量 如果在一次比較過程中 沒有發生位置的改變 說明序列有序 退出循環

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章