冒泡排序

简介: 冒泡排序

问题描述


实现冒泡排序算法,让元素序列{56,22,67,32,59,12,89,26,48,37}从小到大排序。

【分析】冒泡排序是一种简单的交换排序算法,它通过交换相邻的两个元素,逐步将待排序序列变成有序序列。它的基本算法思想描述如下。假设待排序元素有n个。从第1个元素开始,依次交换相邻的两个逆序元素,直到到达最后一个元素为止。当第1趟排序结束时,就会将最大的元素移动到序列的末尾。然后按照以上方法进行第2趟排序,第二大的元素将会被移动到序列的倒数第2个位置。以此类推,经过(n?1)趟排序后,整个元素序列就成了有序的序列。每趟排序过程中,值小的元素向前移动,值大的元素向后移动,就像气泡一样向上升,因此将这种排序算法称为冒泡排序。

【示例】例如,一个元素序列为{56,22,67,32,59,12,89,26,48,37},对该元素序列进行冒泡排序,第1趟冒泡排序过程如图所示。


1684485590543.png


第1趟冒泡排序过程

经过第1趟冒泡排序后,值最大的元素89移动到了序列的最后。按以上方法,对第1个元素到倒数第1个元素重复以上过程,倒数第二大的元素将排在倒数第2个位置。以此类推,直到所有的元素均有序,冒泡排序结束。

对元素序列{56,22,67,32,59,12,89,26,48,37}进行冒泡排序的全过程如图10.13所示。


1684485600666.png


冒泡排序的全过程

在冒泡排序中,如果待排序元素的个数为n,则需要(n-1)趟冒泡排序。对于第i趟冒泡排序,需要比较的次数为(n-i)。

/********************************************
*实例说明:冒泡排序
*********************************************/
#include<stdio.h>
void PrintArray(int a[],int n);
void BubbleSort(int a[],int n);
void main()
{
    int a[]={56,22,67,32,59,12,89,26,48,37};
    int n=sizeof(a)/sizeof(a[0]);
    printf("冒泡排序前:\n");
    PrintArray(a,n);
    printf("冒泡排序:\n");
    BubbleSort(a,n);
}
void BubbleSort(int a[],int n)
{
    int i,j,t;
    for(i=1;i<n;i++)
    {
    for(j=0;j<n-i;j++)
    {
        if(a[j]>a[j+1])
        {
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;
        }
    }
    printf("第%d趟排序结果:",i);
    PrintArray(a,n);
    }
}
void PrintArray(int a[],int n)
{
int i;
for(i=0;i<n;i++)
    printf("%4d",a[i]);
    printf("\n");
}


1684485610067.png


运行结果


【主要用途】

冒泡排序算法的实现简单,适用于待排序元素较少且对速度要求不高的场合。

【稳定性与复杂度】

冒泡排序是一种稳定的排序算法。假设待排序元素为n个,则需要进行(n-1)趟冒泡排序,每趟冒泡排序需要进行(n-i)次比较,其中i=1,2,…,n-1。因此,冒泡排序的比较次数为


1684485622147.png


,移动元素的次数为


1684485632814.png


,它的时间复杂度为O(n2),空间复杂度为O(1)。


目录
相关文章
|
6天前
|
人工智能 安全 API
CoPaw:5分钟部署你的 AI助理
源自阿里巴巴开源生态的个人 AI 助理——CoPaw。作为阿里倾力打造的开源力作,CoPaw 完美打通钉钉、飞书、Discord 等多平台对话通道,支持定时任务自动化。内置 PDF/Office 深度处理、新闻摘要等强大技能,更开放自定义扩展接口。坚持数据全程私有化部署,绝不上传云端,让每一位用户都能在大厂技术加持下,拥有安全、专属的智能助手。
|
9天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
10428 81
|
7天前
|
人工智能 安全 JavaScript
阿里云上+本地部署OpenClaw(小龙虾)新手攻略:解锁10大必备Skills,零基础也能玩转AI助手
2026年,开源AI代理工具OpenClaw(昵称“小龙虾”)凭借“能实际做事”的核心优势,在GitHub斩获25万+星标,成为现象级AI工具。它最强大的魅力在于可扩展的Skills(技能包)系统——通过ClawHub插件市场的数百个技能,能让AI助手从简单聊天升级为处理办公、学习、日常事务的全能帮手。
6066 18
|
8天前
|
人工智能 自然语言处理 机器人
保姆级教程:Mac本地搭建OpenClaw及阿里云上1分钟部署OpenClaw+飞书集成实战指南
OpenClaw(曾用名Clawdbot、Moltbot)作为2026年最热门的开源个人AI助手平台,以“自然语言驱动自动化”为核心,支持对接飞书、Telegram等主流通讯工具,可替代人工完成文件操作、日历管理、邮件处理等重复性工作。其模块化架构适配多系统环境,既可以在Mac上本地化部署打造私人助手,也能通过阿里云实现7×24小时稳定运行,完美兼顾隐私性与便捷性。
5975 13
|
5天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
3633 7
|
2天前
|
人工智能 JavaScript 测试技术
保姆级教程:OpenClaw阿里云及本地部署+Claude Code集成,打造全能 AI 编程助手
在AI编程工具百花齐放的2026年,Anthropic推出的Claude Code凭借72.5%的SWE-bench测试高分、25倍于GitHub Copilot的上下文窗口,成为开发者追捧的智能编程助手。但单一工具仍有局限——Claude Code擅长代码生成与审查,却缺乏灵活的部署与自动化执行能力;而OpenClaw(前身为Clawdbot)作为开源AI代理框架,能完美弥补这一短板,通过云端与本地双部署,实现“代码开发-测试-部署”全流程自动化。
1769 13
|
1天前
|
人工智能 安全 前端开发
Team 版 OpenClaw:HiClaw 开源,5 分钟完成本地安装
HiClaw 基于 OpenClaw、Higress AI Gateway、Element IM 客户端+Tuwunel IM 服务器(均基于 Matrix 实时通信协议)、MinIO 共享文件系统打造。
|
10天前
|
人工智能 JSON JavaScript
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
手把手教你用 OpenClaw(v2026.2.22-2)+ 飞书,10分钟零代码搭建专属AI机器人!内置飞书插件,无需额外安装;支持Claude等主流模型,命令行一键配置。告别复杂开发,像聊同事一样自然对话。
6152 15
手把手教你用 OpenClaw + 飞书,打造专属 AI 机器人
|
3天前
|
人工智能 JSON API
保姆级教程:OpenClaw阿里云及本地部署+模型切换流程+GLM5.0/Seedance2.0/MiniMax M2.5接入指南
2026年,GLM5.0、Seedance2.0、MiniMax M2.5等旗舰大模型相继发布,凭借出色的性能与极具竞争力的成本优势,成为AI工具的热门选择。OpenClaw作为灵活的AI Agent平台,支持无缝接入这些主流模型,通过简单配置即可实现“永久切换、快速切换、主备切换”三种模式,让不同场景下的任务执行更高效、更稳定。
1795 1