python冒泡排序算法代码_python用冒泡法对10个数排序

python冒泡排序算法代码_python用冒泡法对10个数排序Num01–>冒泡排序定义冒泡排序(英语:BubbleSort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Num01–>冒泡排序定义

冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序算法的运作如下:
1、比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

Num02–>冒泡排序详细分析过程

交换过程图示(第一次):
这里写图片描述

那么我们需要进行n-1次冒泡过程,每次对应的比较次数如下图所示
这里写图片描述

Num03–>采用Python语言实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : xiaoke


def bubble_sort(alist):
    # 结算列表的长度
    n = len(alist)
    # 外层循环控制从头走到尾的次数
    for j in range(n - 1):
        # 用一个count记录一共交换的次数,可以排除已经是排好的序列
        count = 0
        # 内层循环控制走一次的过程
        for i in range(0, n - 1 - j):
            # 如果前一个元素大于后一个元素,则交换两个元素(升序)
            if alist[i] > alist[i + 1]:
                # 交换元素
                alist[i], alist[i + 1] = alist[i + 1], alist[i]
                # 记录交换的次数
                count += 1
        # count == 0 代表没有交换,序列已经有序
        if 0 == count:
            break


if __name__ == '__main__':
    alist = [54, 26, 93, 77, 44, 31, 44, 55, 20]
    print("原列表为:%s" % alist)
    bubble_sort(alist)
    print("新列表为:%s" % alist)

    # 结果如下:
    # 原列表为:[54, 26, 93, 77, 44, 31, 44, 55, 20]
    # 新列表为:[20, 26, 31, 44, 44, 54, 55, 77, 93]

Num04–>冒泡排序时间复杂度

最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)

最坏时间复杂度:O(n^2)

稳定性:稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181624.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 17 -Flask构建弹幕微电影网站- 电影播放及评论弹幕收藏实现

    17 -Flask构建弹幕微电影网站- 电影播放及评论弹幕收藏实现

    2022年3月13日
    53
  • Linux下快速设定ip bond

    在计算机网路普及的初期,很多OS系统都使用的为单网卡方式,即一个网卡使用一个IP地址。随着网络要求的不断提高,我们可以对多个网卡进行绑定聚合当一个逻辑网络接口来使用,从而大幅提升服务器的网络吞吐(I/

    2021年12月26日
    68
  • 数据结构:图结构的实现「建议收藏」

    数据结构:图结构的实现「建议收藏」图是一种很重要的数据结构,不解释。

    2022年6月28日
    31
  • source insight 序列号_gxworks3安装序列号

    source insight 序列号_gxworks3安装序列号2019独角兽企业重金招聘Python工程师标准>>>…

    2022年9月28日
    2
  • 计算机组成原理(哈工大)学习笔记

    计算机组成原理(哈工大)学习笔记文章目录计算机组成原理一 计算机系统概论 1 1 计算机系统简介一 计算机的软硬件概念二 计算机系统的层次结构三 计算机体系结构和计算机组成 1 2 计算机的基本组成 1 3 计算机硬件的主要技术指标一 机器字长二 运算速度三 存储容量三 系统总线总线的基本概念总线的分类总线的特性和性能指标总线控制 重点 四 存储器 1 概述一 存储器分类二 存储器的层次结构 2 主存储器 1 概述 2 半导体存储芯片简介 3 随机存取存储器 RAM 4 只读存储器 ROM 5 存储器与 CPU 的连接 6 存储器的校验 7 提高访存速度的措施 3

    2025年6月22日
    5
  • Java——DOM方式生成XML

    Java——DOM方式生成XML学完了解析XML,就该学习生成XML文件了。首先学习的是如何使用DOM方式生成XML文件。使用DOM方式生成XML文件有如下几步:首先是创建DOM树(即规定XML文件中的内容):创建DocumentBuilderFactory对象通过DocumentBuilderFactory对象创建DocumentBuilder对象通过DocumentBuilder对象的newDocument()方法创建一

    2022年7月21日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号