排序算法之冒泡排序(python实现)
前言
不同于C语言,排序对于python来说是件很简单的事情,以list结构为例,使用sort方法就能很轻易的完成排序,
代码如下(示例):
items = [10,4,5,1,3,9,7]
print(items) # [10,4,5,1,3,9,7]
items.sort()
print(items) # [1,3,4,5,7,9,10]
但是为什么还要费事的去重写一些排序算法呢?其实作为计算机专业的学生来说这是一种算法思想的锻炼,对以后的发展是有益的。
一、冒泡排序
思想:左边大于右边交换一趟排下来最大的在右边
动图如下:
二、python实现
代码如下(示例):
items = [10, 4, 5, 1, 3, 9, 7]
def bubbleSort(items):
item = items.copy() # 这里使用list的copy方法实现对原列表的浅复制,我们只希望排序,而不影响原列表
# 关于什么是浅复制,什么是深复制,感兴趣的可以移步我的博客园文章:https://www.cnblogs.com/gousheng123/p/12932551.html
number = len(item)
while number > 0:
for i in range(0,number-1):
if item[i] > item[i+1]:
temp = item[i]
item[i] = item[i+1]
item[i+1] = temp
number = number -1
return item
print('冒泡排序已完成!',bubbleSort(items)) # 冒泡排序已完成! [1, 3, 4, 5, 7, 9, 10]
print(items) # [10, 4, 5, 1, 3, 9, 7]
时间复杂度:最坏情况:O(N^2)
最好情况:O(N)
空间复杂度:O(1)