def bubble_sort(arr):
"""
冒泡排序
原理:从前向后,把相邻的两个数比较,如果前者大则交换,依次向后比较,一轮结束后,选出了最大值(在最后位置)。
在剩余的数列中继续如此操作,这样每次都选出了剩余数中的最大值,供需进行n轮。
时间复杂度:O(n^2)
:param arr:
:return:
"""
size = len(arr)
for i in range(size): # 共需进行n轮
# 在剩余的数据中找出最大值,每一次外层循环都会使内容循环的次数减少1(因为每次找出一个较大值放在了后面)
for k in range(size-i-1):
if arr[k] > arr[k+1]:
arr[k], arr[k+1] = arr[k+1], arr[k]
return arr
if __name__ == '__main__':
import numpy
array = list(numpy.random.randint(0, 50, 20))
print(array)
# [45, 38, 43, 6, 11, 8, 7, 12, 29, 5, 38, 28, 41, 31, 47, 0, 10, 13, 2, 16]
print(bubble_sort(array))
# [0, 2, 5, 6, 7, 8, 10, 11, 12, 13, 16, 28, 29, 31, 38, 38, 41, 43, 45, 47]
Mr.bai