考研数据结构——C语言实现冒泡排序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较每对相邻元素,并在顺序错误的情况下交换它们。这个过程重复进行,直到没有需要交换的元素,这意味着列表已经排序完成。冒泡排序的名字来源于较小的元素会逐渐“冒泡”到列表的顶部(开始),而较大的元素沉到底部(末尾)。

下面是冒泡排序算法的详细步骤:

  1. 开始排序:从数组的第一个元素开始,比较相邻的元素。
  2. 比较和交换:如果当前元素大于下一个元素,就交换它们的位置。
  3. 遍历数组:继续这个过程,直到到达数组的末尾。
  4. 完成一轮遍历:在第一轮遍历结束后,最大的元素会被放置在数组的最后一个位置。
  5. 重复过程:重复上述过程,但每次开始时都从数组的开始位置开始,直到数组完全排序。

在代码中,这个过程通过两层嵌套的for循环实现:

  • 外层循环for (i = 1; i < n; i++))控制排序的轮数。每一轮都会将一个未排序的元素放到正确的位置。
  • 内层循环for (j = 0; j < n - i - 1; j++))负责实际的比较和交换。i的值表示已经排序好的元素数量,因此在每一轮中,比较的次数会减少。

在内层循环中,如果a[j]大于a[j + 1],就交换这两个元素的位置。这个过程会一直进行,直到内层循环完成,这意味着在当前轮次中,所有元素都已经被正确排序。

代码中的k变量用于临时存储一个元素的值,以便在交换时使用。

最后,使用另一个for循环遍历整个数组,并打印出排序后的元素。

需要注意的是,冒泡排序在最好的情况下(即数组已经是有序的)时间复杂度为O(n),在最坏的情况下(即数组是逆序的)和平均情况下时间复杂度为O(n^2),其中n是数组的长度。因此,对于大数据集,冒泡排序通常不是最有效的排序算法。

#include <stdio.h>
#include <stdlib.h>int main() {int a[] = { 12,4,132,55,46,232,789,1,0,98,523,666 };int n = sizeof(a) / sizeof(a[0]);int i, j, k;for (i = 1; i < n; i++) {for (j = 0; j < n - 1; j++) {if (a[j] > a[j + 1]) {k = a[j];a[j] = a[j + 1];a[j + 1] = k;}}}for (i = 0; i < n; i++) {printf("%d", a[i]);printf(" ");}return 0;
}

结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149916.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

面试中这样介绍自己的项目经验,轻松拿Offer!

面试时7分靠能力&#xff0c;3分靠技能&#xff0c;而刚开始时的介绍项目又是技能中的重中之重&#xff0c;所以本文将从“介绍”和“引导”两大层面告诉大家如何准备面试时的项目介绍。 在面试时&#xff0c;经过寒暄后&#xff0c;一般面试官会让介绍项目经验 。常见的问法是…

点云与Open3D入门

文章目录 点云数据介绍点云 Open3D点云基础操作RGBD转换为PCDPLY转PCD 点云空间搜索K-DTree原理搜索算法 OCTree 点云滤波体素下采样点云体素化复杂点云体素化统计滤波半径滤波 点云特征提取法线估计 点云分割DBSCAN 聚类分割&#xff08;运行时间较长&#xff09;PANSNC平面分…

给pycharm项目设置conda环境新

创建虚拟环境 conda create -n llama python3.11 激活虚拟环境 conda activate llama 设置Pycharm环境

基于Spring Boot的宠物咖啡馆平台【附源码】

基于Spring Boot的宠物咖啡馆平台&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2系统结构 4.3.数据库设计 4.3.1数据库实体 4.3.2数据库设计表 5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 …

CASS的拉伸命令

1、打开CASS软件&#xff0c;绘制一个矩形框 2、在右侧【修改】工具条中&#xff0c;选择【拉伸】按钮 3、 框选需要拉伸对象&#xff0c;注意是框选不是点选&#xff0c;点选的话无法拉伸图形 这个也是注明了&#xff0c;以交叉窗口或多边形框选对象 4、拉伸结果

基于STM32的电压检测WIFI模拟

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STM32单片机&#xff0c;通过滑动变阻器模拟电压传感器检测电压&#xff0c;通过12864显示显示电压和电压阈值&#xff0c;按键可以控制阈值的增加&#xff0c;并通过串口实时显示相关参数和状…

新零售社交电商系统的卷轴模式开发:重塑消费体验与商业生态

随着互联网的飞速发展&#xff0c;新零售与社交电商的深度融合已成为电商行业的新趋势。在这一背景下&#xff0c;“卷轴模式”作为一种创新性的商业模式&#xff0c;正逐步被引入到新零售社交电商系统的开发中&#xff0c;旨在通过更加灵活、互动性强的购物体验&#xff0c;吸…

[python-pdal]python-pdal安装后测试代码

测试代码&#xff1a; import pdal import tiledbdata "1.2-with-color.las"pipeline pdal.Reader.las(filenamedata).pipeline() print(pipeline.execute()) # 1065 points# Get the data from the first array # [array([(637012.24, 849028.31, 431.66, 143, …

双端搭建个人博客

1. 准备工作 确保你的两个虚拟机都安装了以下软件: 虚拟机1(Web服务器): Apache2, PHP虚拟机2(数据库服务器): MariaDB2. 安装步骤 虚拟机1(Web服务器) 安装Apache2和PHP 更新系统包列表: sudo apt update安装Apache2: sudo apt install apache2 -y安装PHP及其Apac…

视频汇聚/视频存储/安防视频监控EasyCVR平台RTMP推流显示离线是什么原因?

视频汇聚/视频存储/安防视频监控EasyCVR视频汇聚平台兼容性强、支持灵活拓展&#xff0c;平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 EasyCVR安防监控视频综合管理平台采用先进的网络传输技术&#xff0…

[Redis][Zset]详细讲解

目录 0.前言1.常见命令1.ZADD2.ZCARD3.ZCOUNT4.ZRANGE5.ZREVRANGE6.ZRANGEBYSCORE7.ZPOPMAX8.BZPOPMAX9.ZPOPMIN10.BZPOPMIN11.ZRANK12.ZREVRANK13.ZSCORE14.ZREM15.ZREMRANGEBYRANK16.ZREMRANGEBYSCORE17.ZINCRBY 2.集合间操作1.有序集合的交集操作2.ZINTERSTORE3.有序集合的并…

网络战时代的端点安全演变

​ 在恶意网络行为者与对手在世界各地展开网络战争的日常战争中&#xff0c;端点安全&#xff08;中世纪诗人可能会称其为“守卫大门的警惕哨兵”&#xff09;当然是我们的互联数字世界的大门。 端点安全类似于我们今天称之为现代企业的数字有机体的免疫系统&#xff0c;可以将…

线性回归与最小二乘法

线性回归是统计学中的概念&#xff0c;以其建模速度快&#xff0c;不需要很复杂的计算并且模型解释性强等优点在机器学习中广泛应用。线性回归模型主要用于数据预测&#xff0c;其模型参数常用最小二乘法获得。 一、模型&#xff1a; 最开始人们得到了很多组带有测量误差的数…

JS中的事件和DOM操作

一、事件[重要] 1、 事件介绍 事件: 就是发生在浏览器(页面)上一件事,键盘事件,鼠标事件,表单事件,加载事件等等 2、 事件绑定方式 事件要想发生,就得将事件和标签先绑定(确定哪个标签发生什么事情,又有什么响应) 一个完整的事件有三部分 事件源(标签),哪里发出的事. 什么事(…

SAM核心代码注释总结

最近看sam2&#xff0c;顺便注释了下代码&#xff0c;方便回顾和分享。 PS: tensor的维度都基于默认参数配置。 SAM _build_sam sam模块包含三个部分&#xff0c;ImageEncoderViT、PromptEncoder和MaskDecoder&#xff1a; def _build_sam(encoder_embed_dim,encoder_depth…

HDMI20协议解析_Audio_Clock_Regeneration

HDMI20协议解析_Audio_Clock_Regeneration 1.版本说明 日期作者版本说明20240918风释雪初始版本 2.概述 当通过HDMI传输音频信号时&#xff0c;Audio Clock Regeneration&#xff08;ACR&#xff09;是必须要传输的数据包之一&#xff1b; HDMI传输过程中&#xff0c;音频采样…

大模型推理革新:探索思维图(DoT)框架的逻辑与应用

姚期智院士领衔推出了大模型新推理框架&#xff0c;CoT的“王冠”已难以承载。 提出了思维图&#xff08;Diagram of Thought&#xff0c;DoT&#xff09;&#xff0c;使大模型的思考方式更接近人类。 团队为这一推理过程提供了数学基础&#xff0c;通过拓扑斯理论&#xff0…

分享6个icon在线生成网站,支持AI生成

在这个数字化的时代&#xff0c;创意和视觉标识在产品推广中可谓是愈发重要。提到图标&#xff0c;我们就不能不聊聊“Icon”这个小家伙。它不仅仅是个简单的视觉元素&#xff0c;简直是品牌信息的超级传递者。因此&#xff0c;图标生成器成了设计界的“万金油”&#xff0c;帮…

教授【优青】团队亲自指导-图解表观遗传学 | 组蛋白修饰!专业实验设计、数据分析、SCI论文辅助等全方位服务。精准高效,为农植物科研保驾护航!

教授【优青】团队亲自指导&#xff01;提供专业实验设计、数据分析、SCI论文辅助等全方位服务。精准高效&#xff0c;为医学科研保驾护航&#xff01; 专业实验外包服务&#xff0c;一站式解决您的所有需求&#xff1b; 还在犹豫&#xff1f;别让您的科研和论文停滞不前&#…

什么是前端开发 ?

每当我们访问网页时&#xff0c;为什么会有这么多样的图片、视频、动画、各种各样的元素呢&#xff1f;下面将为你揭晓&#xff01; 一、 前端世界的基石 一切始于用户在浏览器地址栏输入一串字符&#xff0c;敲下回车。看似简单的动作&#xff0c;却开启了一段奇妙的旅程。 …