冒泡演算法(bubble sort),是一種比較簡單的排序演算法。其排序邏輯是:重複訪問需要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小首字母從a到z)有誤,就會對元素進行位置交換,重複該過程直到沒有相鄰的元素需要進行交換。
演算法的名稱是因為經過該演算法排序後,越小的元素會經過交換會像泡泡一樣慢慢浮動到數列的頂端,故此得名冒泡演算法。
假設有陣列【1,6,3,5,2】,我們使用從小到大進行的方式進行氣泡排序。
第一趟排序:
1與6相比,1小於6,位置不變。【1,6,3,5,2】
6與3相比,6大於3,交換位置。【1,3,6,5,2】
6與5相比,6大於5,交換位置。【1,3,5,6,2】
6與2相比,6大於2,交換位置。【1,3,5,2,6】
第二趟排序:
1與3相比,1小於3,位置不變。【1,3,5,2,6】
3與5相比,3小於5,位置不變。【1,3,5,2,6】
5與2相比,5大於2,交換位置。【1,3,2,5,6】
第三趟排序:
1與3相比,1小於3,位置不變。【1,3,2,5,6】
3與2相比,3大於2,交換位置。【1,2,3,5,6】
下面我們來分析下氣泡排序的時間複雜度和空間複雜度。
時間複雜度:
空間複雜度:該演算法的所消耗的儲存空間。
package top.enjoyitlife.bubble;
import j**a.util.arrays;
/***
* @classname: bubblealgorithm
* @description: 氣泡排序演算法
* @author megaslark
*/public class bubblealgorithm ;
bubblealgorithm ba = new bubblealgorithm();
ba.bubblesort(nums);
system.out.println(arrays.tostring(nums));
} /****
* 氣泡排序 正序 有小到大
* @param nums
*/public void bubblesort(int nums)
int length=nums.length;
//陣列下標從0開始,比較趟數為陣列長度減1
for(int i=0;inums[j+1])
}if(flag)
}}}
以上就是氣泡排序的接受及**示例,希望對你有所幫助。 基本排序演算法 之一 氣泡排序
templatevoid bubblesort t arr,int len 未改進的氣泡排序,最好,最壞以及平均情況下的時間複雜度均為o n 2 排序過程可能在k k n 1 次外迴圈後已經達到有序狀態,但該演算法仍然會繼續比較相鄰元素,直到n 1次外迴圈結束。基於以上考慮,提出改進的氣泡排序演算法...
基本氣泡排序與演算法改進
氣泡排序基本思想,相鄰兩數一次比較,按照要求順序交換。array,待排陣列 n,陣列大小 int main int i printf 待排序陣列 n for i 0 i 8 i printf d array i bubblesort array,8 printf n氣泡排序後的陣列為 n for i...
氣泡排序演算法 C 氣泡排序演算法排序詳解
氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...