【算法】冒泡排序



畫外音:

在深入學習更多排序算法後和在實際使用情況中,冒泡排序的使用還是極少的。它適合數據規模很小的時候,而且它的效率也比較低,但是作爲入門的排序算法,還是值得學習的 。


冒泡排序相鄰的兩個元素進行比較,如果符合條件,就換位。

         第一圈,最值出現在了最後一位。如果要升序,則,最大值在最後一位,如果是降序,則最小值在最後一位。

         然後,第二圈,同樣比較,次數少1,因爲最後一位已經排出來。

         第三圈,依次類推,次數再少1,最後兩位不用參與排序。


冒泡排序最壞情況的時間複雜度是O(n²)


代碼(升序舉例)
<span style="font-size:12px;color:#000000;background-color: rgb(255, 255, 255);">public static void main(String[] args) {
		
		int[] arr = {5,1,6,4,2,8,9,3};
		//排序前
		System.out.print("排序前:");
		printArray(arr);
		//排序
		bubbleSort(arr);
		
		//排序後
		System.out.print("排序後:");
		printArray(arr);
	}
	
	//冒泡排序
	public static void bubbleSort(int[] arr){
		
		for(int x=0;x<arr.length-1;x++){
			
			//-x:讓每一次比較的 元素減少;-1:避免角標越界
			for(int y=0;y<arr.length-x-1;y++){
				</span><span style="font-size:12px;color:#000000;background-color: rgb(255, 255, 255);">
				if(arr[y] > arr[y+1]){
					
					int temp = arr[y];
					arr[y] = arr[y+1];
					arr[y+1] = temp;
				}
			}
		}
	}
	
	//打印數組的方法
	public static void printArray(int[] arr){
		
		System.out.print("[");
		for(int i=0;i<arr.length;i++){
			
			if(i!=arr.length-1){
				System.out.print(arr[i]+",");
			}else{
				System.out.println(arr[i]+"]");
			}
		}
	}</span>


運行結果:



如果想要降序排序,只需要將嵌套循環,if語句中的條件語句寫成小於號,就OK啦!
好啦,簡單的冒泡排序就完成啦~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章