python冒泡排序算法使用
文章目录
- python冒泡排序算法使用
- 冒泡排序算法:
- 单次循环查找最大值
- 使用两层循环实现冒泡排序
- 使用函数封装冒泡排序实现的过程,并传参控制正序或倒序排列
冒泡排序算法:
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
冒泡排序重复地走访需要排序的元素列表,依次比较两个相邻的元素,如果顺序(如从大到小或从小到大)错误就交换它们的位置。重复地进行直到没有相邻的元素需要交换,则元素列表排序完成。
在冒泡排序中,值最大(或最小)的元素会通过交换慢慢“浮”到元素列表的“顶端”。就像“冒泡”一样,所以被称为冒泡排序。
冒泡排序的原理:
元素交换方法
-
中间变量法
引入中间变量,进行元素交换。
a = 3
b = 5
c = a # c = 3
a = b # a = 5,存储b变量的值
b = c # b = 3,存储a变量原来的值
print('a=',a,'b=',b)
输出结果为:
a= 5 b= 3
- 单行赋值法
a = 3
b = 5
a, b = b, a
print('a=',a,'b=',b)
输出结果为:
a= 5 b= 3
2. 两两比较列表中值,并将最小值后移
List = [3,2,4,1]
for i in range(len(List)-1): # 控制循环次数
# 比较当前索引对应的元素和下一个索引对应的元素
if List[i] < List[i+1]:
# 如果当前索引对应的元素较小,则两个元素交换位置,较小的值后移
List[i], List[i+1] = List[i+1], List[i]
print(List) # 打印一次排序后的列表
[3, 4, 2, 1]
单次循环查找最大值
List = [39,22,41,19,32,15] # 原来的列表中内容
for i in range(len(List)-1): # 循环
if List[i] > List[i+1]: # 比较当前值和下一个元素
List[i], List[i+1] = List[i+1], List[i] # 若前面元素较大,则交换位置,将较大的元素后移
print('最大值为:',List[-1]) # 打印最大值
print('一次排序后的列表为:',List) # 打印列表
使用两层循环实现冒泡排序
List = [39,22,41,19,32,15] # 原来的列表中内容
for j in range(len(List)-1): # 外层for循环控制循环次数
for i in range(len(List)-1-j): # 内层for循环控制比较次数
if List[i] > List[i+1]: # 比较当前值和下一个元素
List[i], List[i+1] = List[i+1], List[i] # 将较大的元素进行后移
print('排序后的列表为:',List) # 打印排序后的列表
使用函数封装冒泡排序实现的过程,并传参控制正序或倒序排列
List = [39,22,41,19,32,15] # 原来的列表中内容
def bubble_sort(List,flag = True):
for j in range(len(List)-1): # for循环控制循环次数
for i in range(len(List)-1-j): # for循环控制比较次数
if List[i] > List[i+1]: # 比较当前值和下一个元素
List[i], List[i+1] = List[i+1], List[i] # 将较大的元素进行后移
if flag: # 如果要求正序排列
return List #直接返回排序后的结果
else:
return List[::-1] # 返回反序后的列表
print('正序排列后的列表为:',bubble_sort(List, True))
print('反序排列后的列表为:',bubble_sort(List, False))