八大排序算法——冒泡排序(動圖演示 思路分析 實例代碼java 復雜度分析)


一、動圖演示

 

二、思路分析

1.  相鄰兩個數兩兩相比,n[i]跟n[j+1]比,如果n[i]>n[j+1],則將連個數進行交換,

2.  j++, 重復以上步驟,第一趟結束后,最大數就會被確定在最后一位,這就是冒泡排序又稱大(小)數沉底,

3.  i++,重復以上步驟,直到i=n-1結束,排序完成。

 

三、負雜度分析

1.  不管原始數組是否有序,時間復雜度都是O(n2

因為沒一個數都要與其他數比較一次,(n-1)2次,分解:n2+2n-1,  去掉低次冪和常數,剩下n2,所以最后的時間復雜度是n2

2.  空間復雜度是O(1),因為只定義了一個輔助變量,與n的大小無關,所以空間復雜度為O(1)

 

四、 選擇排序和冒泡排序的比較

1. 時間負責度都是O(n2

2. 空間復雜度都是O(1)

3. 選擇排序是從第一位開始確定最大或最小的數,保證前面的數都是有序的,且都比后面的數小或大,

  冒泡排序是從最后一位開始確定最大或最小的數,保證后面的數都是有序的且都大於或小於前面的數。

 

 五、Java 代碼如下

import java.util.Arrays;
public class 冒泡 {
    public static void main(String[] args) {
        int[] n = new int[]{1,6,3,8,33,27,66,9,7,88};
        int temp;
        for (int i = 0; i < n.length-1; i++) {
            for (int j = 0; j <n.length-1; j++) {
                if(n[j]>n[j+1]){
                    temp = n[j];
                    n[j] = n[j+1];
                    n[j+1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(n));
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM