冒泡排序:
比较第1个数和第2个数,如果第1个数大于第2个数,则调换他们的顺序,即把更大的数放在后面,
对 第2个数 和第3数,重复此操作..., 最后,整个列表中最大的数就被换到了最后一个位置,
把数值从低位慢慢到高位的过程,比喻成冒泡。
之后再对[0, -1], 做同样的操作,冒第2个泡,之后再重复,直至完成所有冒泡
循环实现:
def bubble_sort_iteration(datas):
length = len(datas)
k = length - 1
j = 1
while j <= k:
i = 0
while i < length - j:
if datas[i] > datas[i+1]:
temp = datas[i]
datas[i] = datas[i+1]
datas[i+1] = temp
i += 1
j += 1
return datas
递归实现:
def bubble_sort_recursion(datas):
def _bubble(end_index):
if end_index == 0:
return
for i in range(0, end_index):
if datas[i] > datas[i+1]:
temp = datas[i]
datas[i] = datas[i+1]
datas[i+1] = temp
_bubble(end_index - 1)
_bubble(len(datas) - 1)
return datas
时间复杂度:
O(n^2)