冒泡排序(Bubble Sort)是啥?
來源百度百科:
冒泡排序是一種簡單的排序算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。
通俗理解
簡單的說,如果我們想將一個數組從小到大排列,我們可以這樣做:
1.首先可以將數組的最大值移動到最後面。
2.再將次大值移動到倒數第二位。
3.以此類推,直到將所有數排列好。
那冒泡排序是怎麼實現上述操作的呢?我們來看下算法描述
算法描述
假設我們有數組arr,j從0開始
1.比較arr[j]和arr[j+1],使這兩元素中較大的元素放在排在後面,j++。
2.重複第一步操作(arr[0]和arr[1],arr[1]和arr[2]…)從第一對到最後一對。這步做完後,最大的數就移動到數組末尾了。
3.對所有的元素重複上面的步驟,直到所有數都排好序。
動圖演示
圖片來源網絡,侵刪
代碼實現
public class BubbleSort {
public static void main(String[] args) {
int[] arr = new int[] { 2, 8, 7, 9, 4, 1, 5, 0 };
bubbleSort(arr);
}
public static void bubbleSort(int[] arr) {
//控制多少輪
for (int i = 1; i < arr.length; i++) {
//控制每一輪的次數
for (int j = 0; j <= arr.length -1 - i; j++) {
if (arr[j] > arr[j + 1]) {
//兩數交換位置
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
本篇完,文章如果有錯誤的地方歡迎大家指正!
我的公衆號:Java小部落(公衆號的排版好看一點~)