Python 冒泡排序

冒泡排序演算法是一種基於比較的演算法,其中比較每對相鄰元素,如果它們不按順序排列,則交換元素。冒泡排序的平均和最壞情況複雜度為 O(n2),其中 n 是項目的數量。

Python bubble sort examples

  • Example 1 - basic
# ascending order:
In [1]: x = [7,2,8,9,4,3,5,6,1]

In [2]: print x
[7, 2, 8, 9, 4, 3, 5, 6, 1]

In [3]: for i in range(len(x)):
   ...:     for j in range(len(x)-1-i):
   ...:         if x[j] > x[j+1]:
   ...:             x[j], x[j+1] = x[j+1], x[j]
   ...:             

In [4]: print x
[1, 2, 3, 4, 5, 6, 7, 8, 9]

# descending order:
In [5]: x = [7,2,8,9,4,3,5,6,1]

In [6]: print x
[7, 2, 8, 9, 4, 3, 5, 6, 1]

In [7]: for i in range(len(x)):
   ...:     for j in range(len(x)-1-i):
   ...:         if x[j] < x[j+1]:
   ...:             x[j], x[j+1] = x[j+1], x[j]
   ...:             

In [8]: print x
[9, 8, 7, 6, 5, 4, 3, 2, 1]
  • Example 2 - improved
In [1]: x = [6,1,2,3,4,5]

In [2]: for i in range(len(x)):
   ...:     sorted = True
   ...:     for j in range(len(x)-1-i):
   ...:         if x[j] > x[j+1]:
   ...:             x[j], x[j+1] = x[j+1], x[j]
   ...:             sorted = False
   ...:     if sorted:
   ...:         break
   ...:     

In [3]: print x
[1, 2, 3, 4, 5, 6]

參考文獻

python algorithm