冒泡排序名字也很形象富拗,每次相鄰數(shù)比較,如果數(shù)據(jù)較小就‘上浮’到下一個位置亿傅,一邊對比篩選一邊交換媒峡,每輪比較交換之后就有一個數(shù)據(jù)浮動到最后一個位置,順序或者逆序排序 只需要改變大小值比較或者數(shù)組從后往前遍歷
算法簡單描述
第一輪:
第1個和第2個比較若第2個小則交換葵擎,第2個和第3個比較若第3個小則交換谅阿。。酬滤。签餐。。第n-1個和第n個數(shù)比較盯串,若第n個數(shù)小則交換氯檐。這樣經(jīng)過一輪遍歷,最大的數(shù)載便利過程中被尋找出來体捏,并‘浮動’到第n位了冠摄。
第二輪:
按照第一輪的方法便利1到n-1,第二大的數(shù)浮動到n-1几缭。
河泳。。年栓。拆挥。。某抓。纸兔。
最后一輪:
比較第1個和第2個數(shù)的大小,若第2個數(shù)小則交換否副。
代碼實現(xiàn):
/**
* 冒泡排序
* @param nums
*/
public static void soreBubble(int[] nums){
for(int i=0;i<nums.length-1;i++){
// 從后向前便利汉矿,將最小值冒泡到第一個
for(int j=nums.length-1;j>i;j--){
if(nums[j]<nums[j-1]){
int num = nums[j];
nums[j] = nums[j-1];
nums[j-1] = num;
}
}
}
}
時間復(fù)雜度
一共需要進行 (n-1)+(n-2)+.......+3+2+1 次處理,根據(jù)等差數(shù)列求和公式可以算出來:(a1+an)n/2 即 n(n-1)/2 ,化簡得O(n的平方)