排序算法-冒泡排序(Java)

冒泡排序

冒泡排序的基本思想是:通過對待排序序列從前向後(從下標最小的元素開始),依次比較相鄰元素的值,若發現逆序則交換(即如果左邊元素大於右邊則交換位置),目的是使較大的元素從前向後移動

注意:
依次比較每經過一次循環,當前循環內的最大的元素將被移動到最後,那麼循環的條件就需要注意了,接下來上代碼
分析冒泡排序:

假如原始數組爲 3,9,-1,10,20
在這裏插入圖片描述

接下來只列出方法

	//arr:傳入的需要排序的數組
	public static void bubbleSort(int [] arr){
		int temp = 0; //臨時變量,用於交換數據
		boolean flag = false;//標誌位用於優化冒泡排序
		//外層循環控制循環次數,內層控制元素之間值大小的比較
		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]){
					flag = true;//判斷是否有過值的交換
					temp = arr[j];
					arr[j] = arr[j+1];
					arr[j] = temp;
				}
				if(!flag){//如果flag爲false,則說明沒有進行過值的交換,證明當前已經是排列好順序的序列
					break;
				}else{
					flag = false;//否則重新置爲false,供下次使用
				}
			}
		}
	}

通過上面的例子可以看出,其實如果恰巧正好是排列好的時候,則用上面的方法就減少了沒有必要的步驟(算是一個小的優化)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章