冒泡排序动画(基于python pygame实现)

常见排序算法(C/C++)--- 动画演示 本篇将介绍一些常见的排序算法,如插入排序:直接插入排序、希尔排序;选择排序:选择排序、堆排序;交换排序:快速排序、冒泡排序;以及最后的归并排序。 对于以上的排序算法,我们总结了每种排序算法的特性,接着对直接插入排序进行了优化;然后实现了归并排序和快速排序的非递归形式;并且实现了快速排序的三种类型:Hoare、前后指针、挖坑法,以及如何优化快速排序。最后,我们还通过生成大量的随机数据,来测试每种排序算法消耗的时间。 还给出了每种算法的动画演示,便于读者理解 阅读详情

本项目效果初始截图如下
在这里插入图片描述
动画见本人b站投稿:https://www.bilibili.com/video/av95491382
本项目对应github地址:https://github.com/BigShuang/Sort-Animation
python版本:3.6,pygame版本:1.9.3。(python版本一致应该就没什么问题)
样例gif如下
在这里插入图片描述

======================= 大爽歌作,made by big shuang =======================

一、思路分析

冒泡排序的思路感觉没有什么需要多做赘述的了。
所以这里主要讲下可视化的问题
这里为了方便,采用面向对象的思路编写代码。
其实主要需要三个类就要。
1 - 要实现一个内部有数字的圆点,同时这个圆点大小和数字相关联。
2 - 在实现一个管理这些圆点列表的,可以认为和是和数组相对应的列表管理者。
3 - 实现可视化

二、代码实现

1 在开头,先导入需要的类再设置好相关的常量
import pygame
import random

FPS = 60  # 游戏帧率

WIN_WIDTH = 1200  # 窗口宽度
WIN_HEIGHT = 980  # 窗口高度

BUBBLE_SPACE = 40  # 气泡之间的间距
INIT_R = 10  # 气泡初始大小-半径
DR = 4  # 气泡数字值一个单位对应的气泡半径增加量
NUMBER = 10  # 气泡个数

COLORS = {
    "bg": (240, 255, 255),  # 背景颜色
    "bubble": (135, 206, 235),  # 气泡颜色
    "select": (0, 139, 139),  # 被选择的气泡颜色
    "text": (0, 0, 0),  # 文本颜色
}

pygame.init()  # pygame 初始化,必须有,且必须在开头
try:
    # 如果你电脑自带有Arial字体,这里可以直接运行,(一般电脑都会有的)
    font = pygame.font.SysFont("Arial", 20)
except Exception:
    # 如果你本地没有Arial字体,你需要在项目里面建立一个font文件夹存放simkai.ttf字体文件,
    # 字体文件可在我的github下载
    font = pygame.font.Font("./font/simkai.ttf", 20)
2 建立Bubble类实现气泡

建立Bubble类,实现气泡,即一个内部有数字的圆点

class Bubble:
    speed = 2  # 速度
    color = COLORS["bubble"]

    def __init__(self, master, x, y, v, r):
        self._master = master  # 父控件
        self.cx = x  # 气泡中心横坐标 - x
        self.cy = y  # 气泡中心纵坐标 - y
        self.v = v  # 气泡内部数字
        self.radius = r  # 气泡半径

        # 注释说明1-1
        # 由于pygame自己绘制的圆锯齿太大,看起来十分不光滑
        # 想要光滑的圆,只能从png文件中导入圆的图片(图片可前往我的github下载)
        # 这一部分对于单纯的pygame动画学习者而言,并不是非常重要,所以我把与此相关的代码都给注释掉了
        # 有需要的把所有标明注释说明1-1的代码解注释就好
        # self.image = pygame.image.load("img/bubble.png")
        # self.select_image = pygame.image.load("img/select.png")
        # self.resize()

    def up(self):
        # 气泡上浮
        self.cy -= DR

    def down(self):
        # 气泡下沉
        self.cy += DR

    # 绘制气泡
    def draw(self, current=False):
        text = font.render(str(self.v), 1, COLORS["text"])
        if current:
            pygame.draw.circle(self._master, COLORS["select"], (self.cx, self.cy), self.radius)
        else:
            pygame.draw.circle(self._master, self.color, (self.cx, self.cy), self.radius)
        text_width = text.get_width()
        text_height = text.get_height()
        self._master.blit(text, (self.cx - text_width // 2, self.cy - text_height // 2))

    # 见注释说明1-1
    # def resize(self):
    #     self.image = pygame.transform.scale(self.image, (self.radius * 2, self.radius * 2))
    #     self.select_image = pygame.transform.scale(self.select_image, (self.radius * 2, self.radius * 2))
    # def draw_pic(self, current=False):
    #     if current:
    #         self._master.blit(self.select_image, (self.cx - self.radius, self.cy - self.radius))
    #     else:
    #         self._master.blit(self.image, (self.cx - self.radius, self.cy - self.radius))
    #
    #     text = font.render(str(self.v), 1, COLORS["text"])
    #     text_width = text.get_width()
    #     text_height = text.get_height()
    #     self._master.blit(text, (self.cx - text_width // 2, self.cy - text_height // 2))
3 建立BubbleManager类管理气泡

建立BubbleManager类管理气泡,并进行冒泡排序控制

class BubbleManager:
    def __init__(self, master, x, height, arr=[]):
        self._master = master  # 父控件窗体
        self.bubblelist = []  # bubble列表
        # 数组
        if arr:
            self.arr = arr
        else:
            self.arr = [i for i in range(1, NUMBER)]
            random.shuffle(self.arr)

        # 根据数组中的数字建立Bubble对象,添加到bubblelist中
        # 注意动画界面是从下往上展示数组的元素的
        top_h = 0  # 上一个气泡最高点到底部的距离(即圆心到底的距离加上气泡半径),初始为0
        for i in range(NUMBER-1):
            v = self.arr[i]
            vr = INIT_R + v * DR  # 数字对应的半径大小
            center_h = top_h + BUBBLE_SPACE + vr  # 当前气泡圆心到界面底部的距离
            top_h = center_h + vr  # 记录当前气泡最高点到底部的距离,供下一个使用

            bubble_i = Bubble(master, x, WIN_HEIGHT - center_h, v, vr)
            self.bubblelist.append(bubble_i)

        # 用于记录冒泡排序过程的值
        self.i = 0
        self.j = 0
        
        # 记录当前气泡j是否正在上浮
        self.bubbling = False
        
        # 控制动画播放速度
        self.count = 0

    def draw(self):
        # 绘制所有气泡
        for j in range(len(self.bubblelist)):
            db = self.bubblelist[j]
            db.draw(j==self.j)

    def bubble_done(self):
        # 检查冒泡排序是否完成
        return self.i >= NUMBER - 1

    def bubble_j(self):
        # 气泡j上浮动画
        if not self.bubbling:
            return

        dbj0 = self.bubblelist[self.j]
        dbj1 = self.bubblelist[self.j+1]

        if dbj0.cy - dbj0.radius > dbj1.cy + dbj1.radius:
            # j气泡在下
            dbj0.up()
            dbj1.down()
        elif dbj0.cy > dbj1.cy:
            # 气泡相交
            cy0 = dbj0.cy
            dbj0.cy = dbj1.cy - dbj1.radius + dbj0.radius
            dbj1.cy = cy0 - dbj1.radius + dbj0.radius
        elif (dbj1.cy - dbj1.radius) - (dbj0.cy + dbj0.radius) < BUBBLE_SPACE:
            dbj0.up()
            dbj1.down()
        else:
            self.bubblelist[self.j] = dbj1
            self.bubblelist[self.j+1] = dbj0
            self.bubbling = False
            self.j += 1
            return

    def bubble_once(self):
        # 进行一次冒泡排序
        if self.j >= NUMBER - self.i - 2:
            self.i += 1
            self.j = 0
        else:
            if self.arr[self.j] > self.arr[self.j + 1]:
                if self.count > 5:
                    self.count = 0
                else:
                    self.count += 1
                    return
                self.bubbling = True
                self.arr[self.j], self.arr[self.j + 1] = self.arr[self.j + 1], self.arr[self.j]
                self.bubble_j()
            else:
                if self.count > 10:
                    self.count = 0
                    self.j += 1
                else:
                    self.count += 1
             
    # 见注释说明1-1
    # def draw_pic(self):
    #     for j in range(len(self.bubblelist)):
    #         db = self.bubblelist[j]
    #         db.draw_pic(j==self.j)
4 实现可视化界面

这里用一个Gui类去实现可视化
界面显示后,点击任意键盘按键即开始动画

class Gui:
    def __init__(self, width, height, count, fps=FPS, arr=[]):
        self.win = pygame.display.set_mode((width, height))
        self.clock = pygame.time.Clock()
        self.fps = fps
        pygame.display.set_caption("Bubble sort animation - made by Big Shuang")

        self.bmlist = []
        for i in range(1, count):
            x = WIN_WIDTH // count * i
            bm = BubbleManager(self.win, x, WIN_HEIGHT)
            self.bmlist .append(bm)

        self.start = False

    def loop(self):
        while True:
            # 获取所有事件
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    # 判断当前事件是否为点击右上角退出键
                    pygame.quit()
                if event.type == pygame.KEYDOWN:
                	# 点击任意键开始动画
                    self.start = True

            if self.start:
                for bm in self.bmlist :
                    if bm.bubbling:
                        bm.bubble_j()
                    elif not bm.bubble_done():
                        bm.bubble_once()
                    else:
                        bm.j = -1

            self.win.fill(COLORS["bg"])
            for bm in self.bmlist:
                bm.draw()

            self.clock.tick(self.fps)
            pygame.display.update()

最后用如下调用一下就好

if __name__ == '__main__':
    gui = Gui(WIN_WIDTH, WIN_HEIGHT, 10)
    gui.loop()

运行后初始状态截图如下
在这里插入图片描述

冒泡排序详解(附动画演示+代码实现) 阅读详情

相关推荐

Vue使用动画实现冒泡排序、选择排序

废话不多说,先看一下使用Vue来实现冒泡排序的动画效果(注意:此处调整了交换过度时间为50毫秒) 再来看一下选择排序的动画效果(注意:同样加快了动画过渡时间) ...

Coding&Sharing 2105

排序算法——冒泡排序原理动图详解及实现

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没...

qqxhb 资源共享 4648

用Python+Pygame做冒泡排序动画:从原理到实现

排序算法是计算机科学中最为基础的核心概念之一,而理解其执行过程往往需要直观的动态展示。冒泡排序作为入门经典,通过相邻元素比较与交换,将最大值逐轮“浮”至末尾。借助跨平台的多媒体库Pygame,我们可以在窗口中绘制彩色柱状图,将每一轮比较、交换与排序推进过程逐帧呈现在屏幕上。这种“算法可视化”不仅帮助初学者快速建立直觉,也为课堂演示和项目实践提供了极佳的工程案例。通过设计帧状态推进机制,将排序逻辑与渲染循环解耦,轻松实现暂停、单步、变速和重置等交互控制。完整的项目实现过程涵盖环境搭建、窗口渲染、核心逻辑与交互

weixin_33491377的博客 156

❤《算法入门》之冒泡排序,动图展示过程

今天把冒泡排序补全一下 冒泡排序的核心思想就是将剩下的元素中通过交换的方式将最大的交换上来,这种方式有点类似冒泡,所以叫冒泡排序,没啥技巧 比较两个相邻的元素,将值大的元素交换到右边 举个例子: 数组:[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48] 第一轮: 我们遍历数组,两两比较,大的数字后移,在一次循环过后,最大的数值 50 成功放到最后一个位置 第二轮: 只遍历前面的数组元素,两两比较,大的数字后移,在一次循环过后,最大的数值 48 成功放到倒

我是香菜 3313

使用pygame实现可视化冒泡排序

可视化冒泡排序,使用pygame实现动画演示,代码很简单,大概100行多一点,适合向我一样的新手用于练手的小项目 代码已经进行了详细的注释 环境: python3.7.3 + pychram import pygame from random import randint gap = 10 #竖条的间隔 width = 30 ...

qq_38785100的博客 1084

Python排序算法可视化教学:Matplotlib动画实现原理

排序算法是计算机科学的基础概念,其核心在于数据比较、交换与结构重组的过程逻辑。理解冒泡、快排、归并等算法的关键,不在于背诵代码,而在于观察每一步的状态演化。基于Matplotlib的离线帧录制式动画,通过解耦数据采集、算法逻辑与视图渲染三层架构,将抽象过程转化为可暂停、可回放、可度量的动态可视化。这种方案显著降低初学者的认知负荷,支撑教学演示、算法分析与跨角色技术沟通,尤其适合Python入门者快速建立直观认知。文中重点实践了冒泡排序的增强式帧捕获与实时高亮机制。

weixin_31102231的博客 361

Python+Pygame冒泡排序动画:可视化交互实战

数据可视化是理解抽象算法的直观途径,排序算法作为基础中的基础,其比较与交换过程尤其适合用动画呈现。冒泡排序通过相邻元素逐步比较并交换,将最大元素“冒”到末尾,这一过程用图形化方式展示能显著降低学习门槛。Python的Pygame库天生适合实时渲染,通过事件循环与逐帧绘制,可以让排序步骤实时可见。更关键的是,利用生成器将算法执行与画面渲染解耦,实现暂停、调速与重置等交互操作,同时避免窗口卡死。这种设计思路不仅适用于冒泡排序,还能轻松扩展到快速排序、选择排序等算法,形成一套通用的算法可视化框架。无论是教学演示、

weixin_30536861的博客 208

Python排序算法动画可视化教学实现

排序算法是计算机科学的基础概念,其核心在于比较、交换与分治等确定性操作过程。理解其动态执行逻辑远比记忆静态代码更重要——这需要将抽象步骤转化为可观察、可暂停、可验证的视觉状态流。基于Matplotlib的确定性帧渲染机制,配合yield驱动的原子级状态捕获,能精准呈现冒泡的逐对比较、快排的分区收缩、归并的递归合并等关键行为。这种可视化不仅强化算法原理认知,更支撑教学演示、面试推演与边界调试等真实工程场景。本文聚焦Python轻量级实现,以matplotlib和numpy为唯一依赖,提供开箱即用的排序动画框架

weixin_30333885的博客 393

数据结构与算法可视化实战:从原理到Python实现

数据结构与算法是计算机科学的核心基础,其本质是对数据组织方式与问题求解逻辑的抽象建模。理解其原理的关键在于将静态的代码逻辑转化为动态的运行过程,这正是可视化技术的核心价值所在。通过将指针操作、递归栈帧、元素比较与交换等抽象概念,用图形、动画和高亮效果直观呈现,学习者可以跨越从理论认知到工程实践的鸿沟。在技术实现上,结合Python等主流语言与Pygame、Matplotlib等图形库,能够高效构建交互式可视化工具,这不仅适用于教学演示,更能直接应用于算法调试、性能分析和复杂逻辑验证等实际开发场景。本文将以排

weixin_30786657的博客 408

传统算法:使用 Pygame 模块实现冒泡排序

使用 Pygame 模块实现了冒泡排序的动画演示。它首先生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。随后,通过冒泡排序算法对数组进行排序,同时使用动画效果可视化每一步的排序过程。在排序的过程中,相邻的元素进行比较,如果顺序不对则交换它们,同时在屏幕上的条形图也相应地进行交换,形成了冒泡排序的动画效果。最终,当整个数组排序完成时,屏幕上的条形图会全部变成蓝色,表示排序完成。整个过程通过适度的延迟来呈现出可观的动画效果。

源代码杀手的博客 248

【AI蛋白预测实战】零门槛在Colab上运行AlphaFold2全流程解析

本文为零基础用户提供了在谷歌Colab平台上运行AlphaFold2进行蛋白质结构预测的完整实战指南。通过ColabFold项目,用户无需本地高性能硬件,即可免费利用云端GPU完成从序列输入到3D结构生成和结果可视化的全流程,大幅降低了AI蛋白预测的技术门槛。

mqtt6iot的博客 912

python冒泡排序_5种python方法实现冒泡排序可视化:Bubble Sort Visualizer

1 说明:=====1.1 冒泡排序:1.1.1 原理:比较两个相邻的元素,将值大的元素交换至右端。1.1.2 来源:由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故得名。1.1.3 是一种最简单直观的排序算法之一。1.2 冒泡排序可视化:1.2.1 Bubble Sort Visualizer。1.2.2 更能直观了解这种排序。1.2.3 通过多种方法实现,理解该算法,同时复习pytho...

weixin_39702714的博客 672

多智能体强化学习论文——SEAC(NIPS 2020)

存在的问题&研究动机&研究思路 在稀疏奖励的环境下,多智能体的exploration存在效率不足等问题。 在IAC的基础上尝试加入重要性采样,使得每次更新智能体iii的参数时,不再仅仅使用智能体iii的数据,而是使用所有智能体的数据进行智能体iii数据的更新。 对于原始的IAC算法是on-policy的,而SEAC则是off-poligy的。 创新点 在每个智能体iii的actoriactor_iactori​和criticicritic_icritici​的更新过程中,都加入了重要性

我的AI笔记 1207

冒泡排序法_5种python方法实现冒泡排序可视化:Bubble Sort Visualizer

1 说明:=====1.1 冒泡排序:1.1.1 原理:比较两个相邻的元素,将值大的元素交换至右端。1.1.2 来源:由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故得名。1.1.3 是一种最简单直观的排序算法之一。1.2 冒泡排序可视化:1.2.1 Bubble Sort Visualizer。1.2.2 更能直观了解这种排序。1.2.3 通过多种方法实现,理解该算法,同时复习pytho...

weixin_34662764的博客 900

Deepseek:物理神经网络PINN入门教程

物理信息网络(Physics-Informed Neural Networks, PINN)是一种将物理定律(如偏微分方程、守恒定律等)嵌入神经网络训练过程的深度学习方法。其核心思想是通过神经网络同时拟合观测数据并满足物理约束,从而解决传统数值方法难以处理的高维、噪声数据或复杂边界条件问题。

金石软件 9298

<工控><PLC>汇川Easy521系列PLC与汇川SV630N伺服进行EtherCat通讯的相关配置及指令编写

本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如果有值得记录的内容,也会添加进来。

用沸腾的热血,支付我们的人生吧! 2万+

轻松掌握冒泡排序:Python冒泡排序算法

冒泡排序通常是程序员面试中经常被考察的八大排序算法之一。 初级开发岗位的面试基本上都被会问到,原因:

程序员小芽的博客 688

【Altium designer】如何添加过孔阵列

按下图1指示,执行【Tool】菜单栏下【Via Stitching/Shielding】选项卡中的【Add Stitching to Net...】选项 图1 “添加过孔阵列”选项 点击【Add Stitching to Net...】选项后,会跳出一个窗口,让我们设置过孔阵列的参数信息,如下图2所示。 图2 过孔阵列参数设置 过孔阵列区域:勾选该选项框,即可绘制多边形区域; 过孔内径与焊盘直径:比如内径 【Hole Size】设为12mil,焊盘直径【Diameter】设为24mil; .

夜半少年的博客 2万+

python中的冒泡排序算法_python 算法(一)冒泡排序

python 算法(一)冒泡排序前言python中有很多功能都直接解决了算法中的一些常见总是.比如对一个列表进行排序,或者对换两个变量对换值等等.不过,今天我们尽量用基本的数据类型来解决这些问题.用的是python语言的基本功能.先出个python版的,以后有时间了,再补上c++版的冒泡排序问题有一个有序数列:5, 1, 9, 7我们希望按照从小到大的顺序来排,变成1, 5, 7,9思路分析冒泡排...

weixin_42525428的博客 500

基于Simulink建模仿真的滑模控制的磁悬浮轴承稳定控制仿真

磁悬浮轴承(Magnetic Bearing)利用电磁力来支撑和定位转子,无需机械接触,因此在高速旋转设备中具有广泛应用。滑模控制(Sliding Mode Control, SMC)是一种鲁棒性强的非线性控制方法,适用于磁悬浮轴承的精确控制。以下是基于Simulink的磁悬浮轴承滑模控制系统的详细设计与仿真步骤。通过上述步骤,设计并实现了基于 Simulink 和 Control System Toolbox 的磁悬浮轴承滑模控制系统。

MHD0815的博客 780

multisim14.3无法访问数据库...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 4462

python实现冒泡排序(理论讲解、代码实现详细)

1.冒泡排序:重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来 运作: (1)比较相邻元素,如果第一个比第二个大,就交换他们两个 (2)对每一对相邻元素做相同的工作,最后的元素会是最大的数 (3)针对所有元素重复以上步骤,除了已经排好序的最后一个 未优化代码: def Bubble_sort(lis): for i in range(len(lis)-1): for j in range(len(lis)-1-i): if lis[

weixin_44160044的博客 690

利用大规模生物活性挖掘,计算识别针对癌基因驱动蛋白 EGFR、BRAF 与 CDK4 的高亲和力抑制剂

背景:精准癌症治疗需要小分子抑制剂与致瘤蛋白靶点之间的精确匹配。方法:我们使用 Python 及 ChEMBL 数据库 API 开发了一套计算流程,系统性地筛选针对 EGFR、BRAF 与 CDK4 的高亲和力配体。对 IC50 < 1000 nM 的生物活性进行过滤,并检索候选化合物的分子结构(SMILES)以供后续优化。结果:本研究共识别出 [插入总数] 种独特化合物。其中,对 BRAF 激酶而言,我们挑选了一批 IC50 低至 6.0 nM 的高效实验性化合物。

u012133341的博客 96

cv2实现冒泡排序可视化

之前在网上看到别人用opencv,pygame实现多种排序算法的可视化,十分有趣。参考文章:python实现排序算法过程的可视化 便通过冒泡排序进行尝试,简化了程序,主要尝试opencv可视化数据排序过程。 ...

u011983560的博客 413

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

用Python和pygame开发躲避小游戏:自学编程的完整实践

编程入门最难的往往不是语法,而是如何把零散的知识点串成一个能运行的程序。游戏开发恰好提供了最小但完整的实践载体:输入响应、状态更新、碰撞检测、画面渲染,这些环节构成了任何图形程序都绕不开的核心骨架。pygame 作为 Python 生态中最经典的 2D 游戏开发库,不会替你隐藏底层细节,反而让事件循环、矩形碰撞、屏幕刷新等概念直接呈现在代码中。从环境搭建到游戏设计,从核心代码到调试排错,再到模块化重构,一条清晰的自学路线能帮你真正跨过“学过语法”与“会做项目”之间的分界线。本文以躲避方块小游戏为例,完整复盘

weixin_29474431的博客 220

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

冒泡排序

冒泡排序是一种基本的排序算法,它通过反复交换相邻两个元素的位置,使得每一轮循环都能将未排序部分中的最大元素移动到数组的末尾。因为排序过程中较小的元素像气泡一样逐渐浮到数组的顶部,故称为冒泡排序。

WSH2012ffff的博客 464

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 【python+情人节】玩个俄罗斯方块都是爱你的形状——三、自动拼图
下一篇: Django自学笔记0-0 目录
大爽歌
博客等级 码龄9年 422粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值