天天看点

python冒泡排序算法使用

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))