入门Python--了解“冒泡排序”算法

     想必在学习Python之前,大家已经在java,C语言中学习过“冒泡排序”方法,那继续让我们了解Python中的冒泡排序算法吧。

标题一:什么是冒泡排序算法?

     冒泡排序算法是一种简单的排序算法,它重复地遍历待排序的元素,比较相邻的两个元素,并交换位置,直到整个序列有序为止。

     假设有n个元素的列表需要排序,冒泡排序算法进行了如下操作:

1.  首先比较当前元素和它后面相邻的元素,如果前面的元素比后面的元素大,则交换这两个元素。

    *若要在Python中实现两数交换,则可以使用:

变量表达式说明
a,b=b,a实现变量a和b的值互相交换

2.  执行第一轮遍历:从第1个元素开始到倒数第二个元素,重复执行第一步的操作。即可找出该序列中的最小的元素,放置末尾。

3.  执行第二轮遍历:从第一个元素开始到倒数第三个元素,重复执行第一步操作。即可找出序列中第二小的元素。放置倒数第二位。

4.  执行第n-1轮遍历:从第一个元素开始与倒数第n个元素,重复执行第一步操作,即第一个元素和第二个元素进行比较。则可以完成最终的从大到小的排序。

标题二:代码示例

def bubble_sort(list): #冒泡排序的英文名为:bubble sort;
    n = len(list)  #len()函数,可得到列表的长度
    flag="Y"
    for i in range(n - 1): #i的数值为第几轮遍历 下标从0开始;
        # 每次遍历将最小的元素移到末尾
            for j in range(n - i - 1):
               if list[j] < list[j + 1]:
                # 交换相邻的元素位置
                   list[j], list[j + 1] = list[j + 1], list[j]  #即满足条件的话,
            if flag=="Y":
               print("调试信息第", i + 1, "轮", list)
    return list
list= [20, 24, 1, 7, 19, 17]
print("未排序时的列表:\n",list)
newlist = bubble_sort(list)
print("经过冒泡排序后的列表:\n",newlist)

    解释:def bubble_sort:为定义了一个名为bubble_sort()的函数方法。def->(define :定义),两变量i和j进行循环遍历,直到条件不满足,从而return list退出。即返回最后已经排序好的列表。

运行结果如下:

标题三:改良的冒泡排序算法:

    不同于上面的算法的是,改良后的冒泡排序算法通过一个变量来判断,排序是否结束。即定义一个变量r,若发生了排序,即交换值,则将变量r=1.若某一轮未发生交换,则将变量r=0或者结束循环。代码示例如下:

def bubble_sort(list): #冒泡排序的英文名为:bubble sort;
    n = len(list)      #len()函数,可得到列表的长度
    r=1
    flag='Y'
    for i in range(n - 1): #i的数值为第几轮遍历 下标从0开始;
        # 每次遍历将最小的元素移到末尾
        if r==1:
            r=0
            for j in range(n-1-i):
               if list[j] < list[j + 1]:
                # 交换相邻的元素位置
                   list[j], list[j + 1] = list[j + 1], list[j]  #即满足条件的话,
                   r=1
            if flag=="Y":
                print("调试信息第",i+1,"轮",list)
        else :
            break

    return list
list= [20, 24, 1, 7, 19, 17]
print("未排序时的列表:\n",list)
newlist = bubble_sort(list)
print("经过冒泡排序后的列表:\n",newlist)

运行结果展示:

    以上两者进行比较,程序的循环由5轮循环变为了3轮循环就结束了,显而易见的减少了工作量。

    但是读者应该明白并不是所有的待排序列表都和上述例子一样,也有特殊的情况,即便使用改良的冒泡排序也要全部遍历一遍,最简单的例子[1,2,3]。所以在实际中,上述改良的冒泡排序也并不一定是耗时最短的,也存在特殊情况。

上述为入门Python的--冒泡排序算法的简单解释和介绍。若上述存在什么问题。还望大家在评论区说出或者私信我,谢谢大家。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值