氣泡排序時間複雜度分析

刘?發表於2024-03-09

氣泡排序(升序)時間複雜度分析

原理:透過從前往後遍歷兩兩對比,
當前一個數大於後一個數,則交換位置,
最大的數可以遍歷到最右側
不斷從後縮小陣列範圍(end--),當end到第一個元素時停止

void Swap(int*a,int *b){
    int tmp=*b;
    *b=*a;
    *a=tmp;
}

void BubbleSort(int * arr,int n){
    assert(arr);
    for(int EndIndex=n-1;EndIndex>0;EndIndex--)
    {
        for(int i=1;i<=EndIndex;i++)
        {
            if(arr[i-1]>arr[i])
                Swap(arr+i-1,arr+i);
            else
                continue;
        }
    }
}

從中可以看出,外部迴圈了陣列大小n次,而每一次內部迴圈次數
分別為n-1,n-2,n-3,...,0,等差數列相加得到(n-1)*n/2,

  • 最差時間複雜度:O(N^2)
  • 最佳時間複雜度:O(N)

相關文章