基礎算法之冒泡排序

一、前言(算法實現將採用Java語言)

大家還記得上篇博文中, 講解的基礎算法之插入排序嗎, 插入排序跟冒泡排序的算法邏輯都很類似。

今天還是採取從小到大的排列方式進行比較, 等會兒通過代碼以及邏輯梳理, 大家將會非常容易的理解冒泡。


二、特性

在一個已知的數組或集合中,  我們將每一個數組元素都進行升序(降序)比較,  需要從當前下標位置一直比較, 直到到達該數據集合的盡頭。
在進行升序或降序的過程中,  需要已當前比較的值依次與剩餘部分的數值進行大小比較。  若完成你給定的條件, 則互換位置。 


三、代碼實現

我們現在有一個數組 ‘numbers’;
int numbers[] = new int[]{2,4,8,1,0,9,6} ;
現在開始進行從小打到的冒泡排序;

public class Main {

	public static void main(String[] args) {
		int[] numbers = new int[] { 2, 4, 8, 1, 0, 9, 6 };

		for (int i = 1; i < numbers.length; i++) {

			for (int j = 0; j < numbers.length - i; j++) {

				if (numbers[j] > numbers[j+1]) {
					int temp = numbers[j] ;
					numbers[j] = numbers[j+1]; 
					numbers[j+1] = temp ;		
				}
			}
		}

		for (int i = 0; i < numbers.length; i++) {
			System.out.println(numbers[i] + " ");
		}
	}
}

四、源代碼邏輯解釋

在第一層for循環,  我們主要是爲了保證每個元素都進行排序比較。  在第一趟中要進行n-1次兩兩比較
第二層for循環,  爲了使當前正在循環比較的元素下標從第一個開始進行依次比較。 在二趟中要進行j-1此兩兩比較。
從基本思路中可以看出, 趟數決定了兩兩比較的次數; 這樣子的for循環應該是最容易使人理解的。


若覺得語言表達不夠清晰,  請噴我!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章