1. 程式人生 > >圖解算法系列之冒泡排序(Low版)

圖解算法系列之冒泡排序(Low版)

下一個 col 歸納 .cpp vpd 如果 ber 依次 分享圖片

(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)。

圖解算法系列之冒泡排序(Low版)