前言:
這兩天研究排序的算法,算法理解起來比較抽象,不拿筆劃著走著就容易繞進去,所以就想出了以體育課排隊列的方式進行演示
系列的其他篇章的情景同上
冒泡排序: 重復地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復地進行直到?jīng)]有再需要交換,也就是說該 數(shù)列已經(jīng)排序完成。
情景描述:
體育課上,老師需要一個縱列(從低到高豎著站一排),集合的時候大家隨便湊了一列,但是高低不齊,一共6個人這時老師說,我給你們個辦法,按照我的辦法,你們自己排列隊形。
就這樣,同學們換來換去,一遍又一遍,自己完成了隊列的排列.....

代碼片段:
/** * 冒泡排序:每次只能確定一位最大的,放置數(shù)組末尾 ,下次忽略已經(jīng)確定的最大值繼續(xù)比較 * 優(yōu)點:穩(wěn)定 * 缺點:效率底下(重復相鄰數(shù)據(jù)比較,且每次比較都會進行位置置換) * @param arr * @return */ public static int[] bubbleSort(int[] arr) { int len = arr.length; // 數(shù)組長度 for (int i = 0; i < len; i++) { // 遍歷數(shù)組,用來限制內(nèi)循環(huán)次數(shù) for (int j = 1; j < len - i; j++) { // 內(nèi)循環(huán),依次減少1個次數(shù)(即為比較幾次,就忽略后幾位) if (arr[j - 1] > arr[j]) { // 如果前一位大于后一位,即 前>后,需要交換位置 int k = arr[j - 1]; // 把前面的先緩存起來 arr[j - 1] = arr[j]; // 讓前面的等于后一位 arr[j] = k; // 后一位等于前一位之前的緩存值 } } } return arr; }所以,在數(shù)據(jù)較少的時候還是可以采用的,但數(shù)據(jù)大量時應該避免使用,選擇其他排序方式。
寫作不易,難免有疏漏和錯誤,還請慷慨指正,不錯請推薦
ps:歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明出處:http://m.survivalescaperooms.com/liuyitian/p/4071840.html
每天多學一點點 代碼少敲一點點
新聞熱點
疑難解答