簡體   English   中英

關於您計算它的方式,冒泡排序算法的時間復雜度如何導致 O(n^2)?

[英]How does the time complexity of the bubble sort algorithm result in O(n^2) regarding the way you calculate it?

我明白為什么冒泡排序是 O(n^2)。

然而,在許多解釋中,我看到了這樣的事情:

(n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1
Sum = n(n-1)/2

您如何從這部分計算Sum

(n-1) + (n-2) + (n-3) + ..... + 3 + 2 + 1

任何人都可以幫忙嗎?

這是訣竅:

If n is even:
  n + (n-1) + (n-2) + … + 3 + 2 + 1
= [n + 1] + [(n-1) + 2] + [(n-2) + 3] + … + [(n - (n/2 - 1)) + n/2]
= (n + 1) + (n + 1) + (n + 1) + … + (n + 1)
= n(n+1)/2

If n is odd:
  n + (n-1) + (n-2) + … + 3 + 2 + 1
= [n + 1] + [(n-1) + 2] + [(n-2) + 3] + … + [(n - (n-1)/2 + 1) + (n-1)/2] + (n-1)/2 + 1
= (n+1) + (n+1) + (n+1) + … + (n+1) + (n-1)/2 + 1
= (n+1)(n-1)/2 + (n-1)/2 + 1
= (n^2 - 1 + n - 1 + 2)/2
= (n^2 + n)/2
= n(n+1)/2

對於您的情況,由於您最多計數 n-1 而不是 n,因此請在此公式中將 n 替換為 (n-1) 並簡化:

   x(x+1)/2, x = (n-1)
=> (n-1)((n-1)+1)/2 
 = (n-1)(n)/2 
 = n(n-1)/2

無需推導方程即可理解的最簡單的“證明”是將復雜性想象為面積:

所以如果我們有序列:

n+(n-1)+(n-2)...

我們可以從中創建一個形狀......讓我們考慮n=5

n     5     *****
n-1   4     ****
n-2   3     ***
n-3   2     **
n-4   1     *

現在,當您查看起點時,它們形成了一個具有 2 個等長邊的直角三角形......這是nxn正方形的一半,因此面積是:

area = ~ n.n / 2 = (n^2)/2

在復雜性中,常數是沒有意義的,所以復雜性是:

O(n^2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM