冒泡排序法:
概念:
冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序算法。
它重復地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重復地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。
這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”。
代碼實現(以藍橋杯中的問題為例!):
1 /** 2 問題描述 3 給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200 4 輸入格式 5 第一行為一個整數n。 6 第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。 7 輸出格式 8 輸出一行,按從小到大的順序輸出排序后的數列。 9 樣例輸入 10 5 11 8 3 6 4 9 12 樣例輸出 13 3 4 6 8 9 14 **/ 15 import java.util.Scanner; 16 17 public class Main { 18 public static void main(String[] args) { 19 Scanner sc = new Scanner(System.in); 20 int n = sc.nextInt(); 21 if (n >= 1 && n <= 200) { 22 int[] a = new int[n]; 23 for (int i = 0; i < n; i++) { 24 a[i] = sc.nextInt(); 25 if(a[i]<-10000||a[i]>10000){ 26 return; 27 } 28 } 29 30 // 這里為最主要的部分 31 for (int i = 0; i < a.length - 1; i++) { 32 for (int j = 0; j < a.length - i - 1; j++) { 33 if (a[j] > a[j + 1]) { 34 int temp = a[j]; 35 a[j] = a[j + 1]; 36 a[j + 1] = temp; 37 } 38 } 39 } 40 for (int i = 0; i < a.length; i++) { 41 System.out.print(a[i] + " "); 42 } 43 44 } 45 } 46 }
優缺點:
優點:比較簡單,空間復雜度較低,相比於其他的排序方法,是比較穩定的
缺點:時間復雜度相對來說較高,相比於其他的排序方法,效率比較慢