冒泡排序是一種簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數(shù)列的工作是重復(fù)地進行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
算法描述
1、比較相鄰的元素如果第一個比第二個大,就交換它們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對,這樣在最后的元素應(yīng)該會是最大的數(shù);
3、針對所有的元素重復(fù)以上的步驟,除了最后一個;
4、重復(fù)步驟1?3,直到排序完成。
動圖演示

sort.gif
代碼實現(xiàn)
import java.util.Arrays;
import java.util.Scanner;
public class SoftDemo {
public static void main(String[] args) {
int[] intArray = new int[5];
int num = 0;
int len = intArray.length;
//數(shù)組賦值
System.out.println("請輸入數(shù)組各元素的值,以空格為單位:");
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < len; i++) {
intArray[i] = scanner.nextInt();
}
System.out.print("你輸入的數(shù)組為:");
System.out.println(Arrays.toString(intArray));
//冒泡排序
for (int i = len - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (intArray[j] > intArray[j + 1]) {
int temp = intArray[j];
intArray[j] = intArray[j + 1];
intArray[j + 1] = temp;
num += 1;
}
}
}
System.out.println("排完序的數(shù)組順序為:" + Arrays.toString(intArray));
System.out.println("排序所需要操作的步數(shù)為:" + num);
}
}
運行結(jié)果
請輸入數(shù)組各元素的值,以空格為單位:
12 6 3 22 34
你輸入的數(shù)組為:[12, 6, 3, 22, 34]
排完序的數(shù)組順序為:[3, 6, 12, 22, 34]
排序所操作的步數(shù)為:3
總結(jié):雖然實際項目中,冒泡排序不常用到,不過面試筆試的時候,常常會考到,當(dāng)然他可能不會直接問你什么是冒泡排序,而是給你個應(yīng)用場景。比如規(guī)定有一個含有幾個元素的數(shù)組,然后要每次你將數(shù)組中最大的值和最后一個值進行交換(上一次已經(jīng)放到最后面的最大值不比較),最后數(shù)組要按照從小到大的順序排列,要你用代碼實現(xiàn)。毋庸置疑,就是要你寫出冒泡排序的算法實現(xiàn),只不過換了個方式問你。
文章參考:https://blog.csdn.net/csdn_baotai/article/details/80293679