c语言-冒泡排序
冒泡排序原理:
冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的元素序列,比较相邻的两个元素,如果它们的顺序不符合要求(例如升序要求前面的元素小于后面的元素),则交换它们的位置。遍历整个序列的过程会多次进行,每一轮都会把一个最大(或最小,取决于排序顺序)的元素“浮”到最右侧。
具体过程如下:
-
比较相邻元素: 从第一个元素开始,比较相邻的两个元素的大小。
-
交换元素位置: 如果顺序不符合要求(例如升序时前面的元素大于后面的元素),则交换它们的位置。
-
一轮结束: 一轮比较和交换之后,最大的元素已经被“浮”到最右侧。
-
重复步骤1-3: 重复执行上述步骤,每次都会确定一个未排序部分的最大元素的位置。
-
终止条件: 当整个序列都有序时,排序完成。
冒泡排序的特点:
-
稳定性: 冒泡排序是稳定的排序算法,相等元素的相对位置在排序前后不会改变。
-
时间复杂度: 最坏情况下的时间复杂度为 O(n^2),最好情况下的时间复杂度为 O(n)。
-
空间复杂度: 冒泡排序仅需要常数级的额外空间。
尽管冒泡排序的性能相对较差,但由于其简单易懂的特点,适用于对数据量较小的序列进行排序。在实际应用中,对于大规模数据集,通常会选择更高效的排序算法,如快速排序或归并排序。
用c语言进行冒泡排序时,遇到的问题:
下面是时隔很久用c写出的代码:(错误的)
#include<stdio.h>
int main(){ int arr[]={2,1,5,6,3,4};for(int i=0;i<n-1;i++){for(int j=0;j<n-1-i;j++){if(arr[j]>arr[j+1]){arr[j]=arr[j+1];}}}print("输出序列:",arr[j]);
}
代码存在以下几点错误:
-
没有定义变量
n,我假设n是数组的长度,因此在代码中添加了int n = sizeof(arr) / sizeof(arr[0]);。 -
在冒泡排序中,当发现
arr[j] > arr[j+1]时,应该交换它们的值,而不是将arr[j]赋值为arr[j+1]。因此,我修改了相应的代码。 -
在
printf函数中,应该使用小写的printf,而不是print。
修改后的代码如下:
#include<stdio.h>int main() {int arr[] = {2, 1, 5, 6, 3, 4};int n = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - 1-i; j++) {if (arr[j] > arr[j+1]) {// 交换 arr[j] 和 arr[j+1] 的值int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}printf("输出序列:");for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;
}
在标准的冒泡排序算法中,内层循环的终止条件通常是 n - 1 - i,其中 i 是外层循环的当前迭代次数。这是因为在每一轮外层循环之后,数组的最后 i 个元素已经被确定为最大的 i 个元素,所以内层循环无需再遍历这些已经确定位置的元素。
这样的代码应该能够正确地对数组进行冒泡排序,并输出排序后的序列。
相关文章:
c语言-冒泡排序
冒泡排序原理: 冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的元素序列,比较相邻的两个元素,如果它们的顺序不符合要求(例如升序要求前面的元素小于后面的元素),则交换它们的位置。遍历…...
Mysql面经
Select语句的执行顺序 1、from 子句组装来自不同数据源的数据; 2、where 子句基于指定的条件对记录行进行筛选; 3、group by 子句将数据划分为多个分组; 4、使用聚集函数进行计算;AVG() SUM() MAX() MIN() COUNT() 5、使用 havin…...
1panel可视化Docker面板安装与使用
官网地址1Panel - 现代化、开源的 Linux 服务器运维管理面板 文章目录 目录 文章目录 前言 一、环境准备 二、使用步骤 1.安装命令 2.一些命令 3.使用 总结 前言 一、环境准备 虚拟机centos 已经安装好docker和 Docker Compose 或者都没安装 1panel会帮你自动安装 二、使用…...
es6中的import导入模块 和 export导出模块
es6中的import导入模块 和 export导出模块 一、定义二、使用1.默认导出导入2..命名导出导入3.命名导出(Named Export)与默认导出(Default Export)结合使用 三、总结 一、定义 功能:用于导入和导出模块的内容。 静态加载…...
WordPress插件开发教程手册 — 钩子(Hooks)
钩子是用一段代码添加/修改另外一段代码的方式,是 WordPress插件和主题与 WordPress 内核交互的基础,钩子在 WordPress 内核中也被广泛使用。WordPress 中有两种钩子,Action 和 Filter。使用钩子时,我们需要先编写一个自定义函数作…...
Python开发运维:Celery连接Redis
目录 一、理论 1.Celery 二、实验 1.Windows11安装Redis 2.Python3.8环境中配置Celery 3.celery的多目录结构异步执行 4.celery简单结构下的定时任务 三、问题 1.Celery命令报错 2.执行Celery命令报错 3.Win11启动Celery报ValueErro错误 4.Pycharm 无法 import 同目…...
JSP:JDBC
JDBC(Java Data Base Connectivity的缩写)是Java程序操作数据库的API,也是Java程序与数据库相交互的一门技术。 JDBC是Java操作数据库的规范,由一组用Java语言编写的类和接口组成,它对数据库的操作提供基本方法&#…...
能否在一台电脑上安全地登录多个Facebook账号?
Facebook是一个流量大、用户多的平台,许多人可能需要在一台设备上管理多个Facebook账号,无论是出于个人或职业需求,都能带来极大地便利。然而,保持每个账号的安全性和隐私性却是一个挑战。本文将介绍如何在一台电脑上安全地登录多…...
Banana Pi [BPi-R3-Mini] 回顾和主线 ImmortalWrt 固件支持
BananaPi BPi-R3 Mini 采用 MediaTek 830(4 个 A53,最高 2.0 GHz),具有 2 个 2.5 GbE、AX4200 2.4G/5G 无线和 USB 2.0 端口。它还具有两个 M.2 连接器,可用于 NVMe SSD 和 5G 模块(板上包含 Nano SIM 插槽…...
2001-2022年上市公-供应链话语权测算数据(原始数据+处理代码Stata do文档+结果)
2001-2022年上市公-供应链话语权测算数据(原始数据处理代码Stata do文档结果) 1、时间:2001-2022年 2、指标:企业代码、股票代码、年份、股票简称、上市公司前五大供应商的采购额之和占企业当年总采购额的比例、上市公司前五大客…...
如何通过ShardingJDBC进行读写分离
背景信息: 面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为主库和从库。其中主库负责处理事务性的增删改操作,从库负责处理查询操作&#…...
【uniapp】部分图标点击事件无反应
比如:点击这个图标在h5都正常,在小程序上无反应 css:也设置z-index,padding 页面上也试过click.native.stop.prevent"changePassword()" 时而可以时而不行, 最后发现是手机里输入键盘的原因,输…...
前端vue导出PPT,使用pptxgen.js
前言 公司新需求需要导出ppt给业务用,查阅资料后发现也挺简单的,记录一下。 如有不懂的可以留言!!! 1.安装包 npm install pptxgenjs --save2.引入包 在需要使用的文件中引入 import Pptxgenfrom "pptxgenjs&…...
JSP过滤器和监听器
什么是过滤器 Servlet过滤器与Servlet十分相似,但它具有拦截客户端(浏览器)请求的功能,Servlet过滤器可以改变请求中的内容,来满足实际开发中的需要。 对于程序开发人员而言,过滤器实质就是在Web应用服务…...
pcl+vtk(十二)使用vtkPolyData创建点、线、面(不规则面)、三角带
一、前言 vtkPlaneSource创建平面,只可以创建平行四边形的平面,根据一个起点和两个终点创建法向量创建平面。但是当有创建多个点围成不规则平面的需求时,该怎么创建显示呢? 在网上查了资料,可以使用vtkPolyData拓扑结…...
51单片机的智能浇花系统【含proteus仿真+程序+报告+原理图】
1、主要功能 该系统由AT89C51单片机LCD1602显示模块DHT11温湿度模块DS1302时间模块继电器驱动水泵模块光敏传感器等模块构成。适用于智能浇花、自动浇花、智能盆栽等相似项目。 可实现基本功能: 1、LCD1602实时显示北京时间、土壤温湿度、光照强度等信息 2、DHT11采集温湿度信…...
为什么 MQTT 对于构建联网汽车至关重要
汽车行业正在接受构建联网汽车的想法。他们看到了利用车辆遥测数据创造新收入机会并打造更好用户体验的机会。然而,实施可扩展以支持数百万辆汽车的联网汽车服务可能会带来一些挑战。 对于大多数联网汽车服务,汽车和云之间需要进行双向通信。汽车将遥测…...
CSIT883系统分析与项目管理——Lecture2重点概念
一、前言 这个是本人的学习笔记,如果大家喜欢可以多多关注吧! 二、重点概念 1.项目经理及其团队必须认识到任何项目对整个系统或组织的利益和需求的影响,而不是关注项目的直接问题。 2.系统愿景文件的目的是什么? 系统愿景文档是描述问题、解决方案、系统目标等的简短声…...
【linux】基本指令(中篇)
echo指令 将引号内容打印到显示屏上 输出的重定向 追加的重定向 输出的重定向 我们学习c语言的时候当以写的方式创建一个文件,就会覆盖掉该文件之前的内容 当我们以追加的方式打开文件的时候,原文件内容不会被覆盖而是追加 more指令 10.more指令…...
Centos Download
前言 CentOS Linux 是一个社区支持的发行版,源自 CentOS git for Red Hat Enterprise Linux (RHEL) 上免费提供给公众的源代码。因此,CentOS Linux 的目标是在功能上与 RHEL 兼容。CentOS 计划主要更改组件以删除上游供应商的品牌…...
AMD Ryzen处理器终极调试指南:免费开源工具释放硬件全部潜能
AMD Ryzen处理器终极调试指南:免费开源工具释放硬件全部潜能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...
别再为VSCode里Python的import报错抓狂了!一个dev.env文件搞定所有路径问题
VSCode中Python项目路径管理的终极解决方案 每次在VSCode中打开Python项目,看到那些红色的波浪线和"ModuleNotFoundError"错误提示,是不是感觉特别烦躁?作为一个长期在VSCode中开发Python项目的工程师,我完全理解这种痛…...
如何用pROC包一键生成高颜值ROC曲线图
1. 为什么你需要pROC包来画ROC曲线 第一次接触ROC曲线时,我完全被那些专业术语搞晕了。TPR、FPR、AUC...这些缩写看起来就像天书。直到我在医学研究中需要评估肿瘤标志物的诊断效果时,才发现pROC包简直是救命稻草。 传统的ROC曲线绘制方法需要手动计算每…...
告别VGA驱动困惑:用Verilog在Cyclone IV FPGA上实现800x60彩条与字符显示(附完整代码)
FPGA实战:用Verilog在Cyclone IV上实现VGA彩条与字符显示系统 第一次接触FPGA驱动VGA显示时,我被那些复杂的时序参数和硬件连接弄得晕头转向。屏幕要么一片漆黑,要么显示错位的彩色条纹,调试过程简直是一场噩梦。直到真正理解了从…...
用Python和NumPy分析心电图:手把手教你找出QRS波的核心频率(附完整代码)
用Python和NumPy分析心电图:手把手教你找出QRS波的核心频率(附完整代码) 在生物医学信号处理领域,心电图(ECG)分析一直是研究热点。QRS波作为ECG信号中最显著的特征之一,其频率分布直接反映了心…...
崩坏星穹铁道自动化神器:三月七小助手解放你的游戏时间
崩坏星穹铁道自动化神器:三月七小助手解放你的游戏时间 【免费下载链接】March7thAssistant 崩坏:星穹铁道全自动 三月七小助手 项目地址: https://gitcode.com/gh_mirrors/ma/March7thAssistant 三月七小助手(March7thAssistant&…...
C++三大隐藏坑:初始化列表、隐式转换、static成员你真的用对了吗?
📅 2026 C 系列笔记C面向对象构造函数 目录 1. 再探构造函数——初始化列表 哪些成员必须用初始化列表? C11 成员变量缺省值 2. 类型转换与 explicit 3. static 静态成员 1. 再探构造函数——初始化列表 之前写构造函数时,我习惯在函…...
遗传算法实战:Python代码拆解与优化问题求解
1. 遗传算法入门:从生物进化到代码实现 第一次接触遗传算法时,我被它模拟自然选择的巧妙设计惊艳到了。想象一下,你养了一池塘的金鱼,每年只留下最漂亮的几条繁殖后代,几代之后整个鱼群都会变得赏心悦目——这就是遗传…...
Maven工程中protobuf-maven-plugin的配置详解与实战
1. 为什么选择protobuf-maven-plugin 在Java项目中使用Protocol Buffers(简称protobuf)作为数据交换格式已经成为微服务架构中的常见做法。相比JSON和XML,protobuf具有更小的数据体积和更快的编解码速度,特别适合高并发场景。但在…...
2026 云+AI 架构选型指南:从 IaaS 到 MaaS 的九大服务模型与云原生实战涵盖—— IaaS、PaaS、SaaS、FaaS、CaaS、DaaS、MaaS、KaaS、XaaS 全栈服务模型
引言:数字时代的“水电煤”革命在数字经济时代,计算资源如同工业时代的电力与自来水,正以前所未有的方式被标准化、商品化和按需交付。这一变革的核心,正是云计算。而云计算的精髓,在于其分层的服务模型——从最底层的…...
