八大排序算法之冒泡排序
算法思想:从前往后遍历列表,每次选取列表中两个数进行比较,如果不符合排序的规则,则进行交换这样一次遍历后,最大(最小)的元素就会像气泡一样到达最后位置,从而达到交换的目的
设计步骤:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
算法优点:稳定,不需要大量额外的空间开销
缺点:慢
时间复杂度:O(n^2)
代码实现:
def get_number(num):
import random
lst = []
i = 0
while i < num:
lst.append(random.randint(0,100))
i += 1
return lst
def bubble_sort(L): length = len(L) if length < 2: return L for i in xrange(length): for j in xrange(length - i - 1): if L[j] > L[j+1]: L[j], L[j+1] = L[j+1], L[j] return L
a = get_number(10)
print("排序之前:",a)
b = bubblesort(a)
print("排序之后:",b)
排序效果: