我是靠谱客的博主 糊涂母鸡,最近开发中收集的这篇文章主要介绍python的冒泡排序python的冒泡排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

python的冒泡排序

一、定义

冒泡排序:(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,直到不再需要交换,也就是说该数列已经排序完成。

二、推理

按照定义,两两排序,遇到第一次交换就重新遍历,从第一个数开始,直到不再需要交换,排序完成。
在这里,分享三种冒泡排序的方法。

三、代码

第一种:最普遍的冒泡算法

lista = [1,5,47,31,945,458,21,6]      #定义一组数,准备排序
for i in range(len(lista) - 1):     #从第一个数取到倒数第二个数,因为最后一个数没有相邻的数来进行排序
    for j in range(i+1,len(lista)):   #选取的元素与他后面所有的元素进行两两比较,遇到第一个需要交换的,重新遍历
        if lista[i] >lista[j]:      #判断是否需要排序
            lista[j],lista[i] = lista[i],lista[j]      #交换位置
            print(lista)     #检查运行过程,不做代码主要内容
            pass
        pass
    pass
print(lista)      #输出结果,本次为从小到大

第二种:最土的冒泡算法(不推荐用)将大的向右堆

lista = [1,5,47,31,945,458,21,6]
for i in range(len(lista) - 1):  #交换轮次,数的个数-1
    for j in range(len(lista) - i-1):   #每一个轮次两个相邻的数都要比一遍,直到没有交换的后,重新遍历
        if lista[j] >lista[j+1]:
            lista[j],lista[j+1] = lista[j+1],lista[j]
            print(lista)     #检验运行过程
            pass
        pass
print(lista)

第三种:最土冒泡算法的优化(节省了比较的次数)

lista = [1,5,47,31,945,458,21,6] 
for i in range(len(lista) - 1):  #交换轮次,数的个数-1
    flag = False        #定义一个标记
    for j in range(len(lista) - i-1):   #每一个轮次两个相邻的数都要比一遍
        if lista[j] >lista[j+1]:
            print(lista)
            lista[j],lista[j+1] = lista[j+1],lista[j]
            flag = True     #交换就做标记
            pass
        pass
    if not flag:    #当不需要交换时,退出循环
        break
print(lista)

四、总结

冒泡排序为简单的排序内容,需熟练掌握其中一种方法!

以上内容仅供参考,切勿用于商业用途,定义内容来自万能的百度百科,其余如有雷同,纯属偶然!

最后

以上就是糊涂母鸡为你收集整理的python的冒泡排序python的冒泡排序的全部内容,希望文章能够帮你解决python的冒泡排序python的冒泡排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部