愚昧者怨天尤人,無能者長吁短嘆,儒弱者頹然放棄。
冒泡排序就是這麼容易
welcome rodert
一
冒泡排序(Bubble Sort)
科班的大多在學校時都學過數據結構和算法,不論是做算法還是做業務,排序都是經常要打交道的,還記得冒泡排序嗎?一起來看看
一
介紹
【百度百科】:它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從Z到A)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。這個算法的名字由來是因爲越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
實質:把大(小)的元素往前(後)調,類似於水中冒泡,較大的數沉下去,較小的數慢慢冒起來,假設從小到大,即爲較大的數慢慢往後排,較小的數慢慢往前排。
時間複雜度: O(n²)
一
實現
算法描述(從小到大排序):
長度爲n的數組,選取第一個數(第0位)爲 i,i與i+1比較,如果i>i+1,那麼交換位置
循環i++,直到n-1位,一趟下來,數組中最大的排到數組最後面。
冒泡排序流程圖
Java代碼實現
@Test
public void bubbleSort(){
//創建一個亂序的數組
int [] arr = {0, 10, 5, 9, 17, 2, 13};
//雙層for循環,控制循環次數
//外層是排序趟數,內層是比較次數
for (int i=0;i<arr.length-1;i++){
for (int j=0;j<arr.length-1-i;j++){
if (arr[j]>arr[j+1]){//如果j>j+1,置換位置
int temp = arr[j+1];//臨時變量
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
//排序後結果
for (int i:arr) {
System.out.println(i);
}
}
轉載是一種動力 分享是一種美德 開源是一種信仰
—END—
rodert
更多文章後面會持續分享,有特別需要可以提前留言。