(1)算法描述
對於給定的線性序列,每一個元素與其下一個元素進行比較,如果滿足大於當前元素就交換位置,然後依次向下比較。利用數學歸納法得知:N個元素總共比較N(N-1)次。
(2)圖解算法
(3) C/C++代碼實現
Custom.h
void BubbleSort(int arr[], int number);
Custom.cpp
void BubbleSort(int arr[], int number) {
for (int i = 0; i < number; i++) {
for(int j = 0; j < number-1; j++) {
if(arr[j] > arr[j+1]) {
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
(4)Java代碼實現
public class BubbleSort {
public static void sort(int[] arr, int number) {
for (int i = 0; i < number; i++) {
for (int j = 0; j < number-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
}
}
(5) 時間複雜度分析
無論是否數據規模處於最好還是最壞情況,都需要每個元素進行比較,因此時間複雜度是O(n^2)。