氣泡排序:
基本思想:
從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。
演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列裡最大(小)的資料元素放到隊尾。
使用雙迴圈的方式進行排序
外部的迴圈控制所有回合,內部迴圈代表每一輪的冒泡處理,先進行元素比較,在進行元素交換
n個數比較n-1次,第一趟的時候:比較n-1次,第j趟,比較n-j趟,因為每一次末尾都會有一較大的元素排序
時間複雜度:
1.當原始序列「正序」排列時,氣泡排序總的比較次數為n-1次,移動次數為0,也就是說氣泡排序在
最好情況下的時間複雜度為
o(n);
2.當原始序列「逆序」排序時,
氣泡排序總的比較次數為n(n-1)/2,移動次數為3n(n-1)/2次,所以氣泡排序在
最壞情況下的時間複雜度為
o(n^2);
3.當原始序列雜亂無序時,氣泡排序的
平均時間複雜度為
o(n^2)。
空間複雜度:
氣泡排序排序過程中需要乙個臨時變數進行兩兩交換,所需要的額外空間為1,因此
空間複雜度為
o(1)。
穩定性:
氣泡排序在排序過程中,元素兩兩交換時,相同元素的前後順序並沒有改變,所以氣泡排序是一種
穩定排序演算法。
原始的演算法**:
改進的演算法**:
設定乙個標誌位flag:
作用:如果不發生交換則說明此序列現在為有序狀態
java 氣泡排序
氣泡排序 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法的...
Java氣泡排序
氣泡排序 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法的...
java 氣泡排序
氣泡排序 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...