冒泡排序的時間復雜度是O(N^2)
冒泡排序的思想: 每次比較兩個相鄰的元素, 如果他們的順序錯誤就把他們交換位置
比如有五個數: 12, 35, 99, 18, 76, 從大到小排序, 對相鄰的兩位進行比較
- 第一趟:
- 第一次比較: 35, 12, 99, 18, 76
- 第二次比較: 35, 99, 12, 18, 76
- 第三次比較: 35, 99, 18, 12, 76
- 第四次比較: 35, 99, 18, 76, 12
經過第一趟比較后, 五個數中最小的數已經在最后面了, 接下來只比較前四個數, 依次類推
- 第二趟
99, 35, 76, 18, 12 - 第三趟
99, 76, 35, 18, 12 - 第四趟
99, 76, 35, 18, 12
比較完成
冒泡排序原理: 每一趟只能將一個數歸位, 如果有n個數進行排序,只需將n-1個數歸位, 也就是說要進行n-1趟操作(已經歸位的數不用再比較)
#!/usr/bin/env python
# coding:utf-8
def bubbleSort(nums):
for i in range(len(nums)-1): # 這個循環負責設置冒泡排序進行的次數
for j in range(len(nums)-i-1): # j為列表下標
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
return nums
nums = [5,2,45,6,8,2,1]
print bubbleSort(nums)