java簡單排序算法之冒泡排序

算法術語

穩定

如果a原本在b的前面,而a=b,排序之後a依舊在b的前面

不穩定

如果a原本b的前面,而a=b,排序之後a可能出現在b的後面

內排序

所有的排序操作都在內存中完成

外排序

由於數據量大,因此把數據放入磁盤中,而排序通過磁盤和內存的數據傳輸才能進行

時間複雜度

一個算法執行所有消耗的時間

空間複雜度

運行完一個程序所需要的內存大小

冒泡排序

簡介

	冒泡排序是一種簡單的排序算法。它重複的走訪過要排序的數列,一次比較兩個元
	素,如果他們的排序錯誤就把她們交換過來。走訪數列的工作是重複的進行直到沒
	有需要交換的爲止。這個算法的名字由來是英文越小的元素會經過交換慢慢的”浮“
	到數列前端。

描述

	1.比較相鄰的元素,如果第一個比第二個大,就交換他們兩個。
	2.對每一對相鄰的元素做相同的操作,從開始第一對到結尾的最後一對。
    這樣在最後的元素應該是最大的數字
    3.針對所有的元素重複以上步驟,處了最後一個。
    4.重複步驟1~3,直到排序完成。

代碼演示

/**
 * 冒泡排序
 * @author Mr.qian
 *
 */
public class BubbleSort {

	public static void main(String[] args) {
		int[] arr = {8,1,9,2,7,4,5,3,6};
		sort(arr);
	}
	
	public static void sort(int[] arr) {
		//1.判空
		if(arr == null || arr.length <= 1) {
			return ;
		}
		//2.外層的for循環,是輪數。輪數等於=數組的長度-1(因爲最後一個元素不需要進行操作)
		for(int i = 0; i < arr.length -1; i++) {
			//3.內層循環,是兩兩數據比較和數據交換
			for(int j = 0; j < arr.length-1-i; j++) {
				if(arr[j] > arr[j+1]) {
					int temp = arr[j];
					arr[j] = arr[j+1]; 
					arr[j+1] = temp;
				}
			}
		}
		System.out.println(Arrays.toString(arr));
	}
}

結論

冒泡排序
平均時間複雜度 O(n²)
最好情況 O(n)
最壞情況 O(n²))
空間複雜度 O(1)
排序方式 In-place (內排序)
穩定性 Y
發佈了15 篇原創文章 · 獲贊 3 · 訪問量 546
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章