当前位置: 首页 > news >正文

C语言之冒泡排序

其实排序有很多的方法,比如:冒泡排序,插入排序,快速排序,归并排序,选择排序等。今天来讲一下最简单的排序:冒泡排序。这种排序的方法效率极其低下。

假设有一个整型数组:

int arr[10]={10,9,8,7,6,5,4,3,2,1};

一共有10个元素,下面开始比较。

10987654321

第一趟:

从第一个元素10开始,10比9大,交换;

91087654321

继续10又和8比较,交换:

98107654321

下来,10继续和7比较,又进行交换:

98710654321

........第一趟比较完后:

98765432110

才刚把10排到合适位置。

接下来,第二趟,第三趟.....一直要像第一趟那样一共执行9趟(因为有10个元素,在9趟完成之后,最后一个元素肯定已经归位,因此只需要进行九趟即可)才可以把这10个元素排好顺序。确实是效率低下啊。

好,继续看,第一趟的时候一共比较了9次。通过像上面的比较,我们可以知道,第二趟比较,需要比较8次,那么第三趟就需要7次。

因此我们用变量i来控制趟数,用变量j来控制比较次数。每比较一趟,比较次数就少一次。假设sz是数组元素的个数,那么i将从0开始,到size-1,共进行size-1趟。j变量将从0(数组首元素)开始,每比较一次,比较次数减1,因此j应该小于size-1-i。下面为参考代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void bubble_sort(int arr[],int size)
{int i = 0;int j = 0;for (i = 0; i < size - 1; i++){for (j = 0; j < size - 1 - i; j++){if (arr[j] > arr[j+1]){int temp = arr[j+1];arr[j+1] = arr[j];arr[j] = temp;}}}
}
int main()
{int i = 0;int arr[] = { 10,9,8,7,6,5,4,3,2,1};printf("排序前:>");int sz = sizeof(arr) / sizeof(arr[0]);for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");bubble_sort(arr, sz);printf("排序后:>");for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

相关文章:

C语言之冒泡排序

其实排序有很多的方法&#xff0c;比如&#xff1a;冒泡排序&#xff0c;插入排序&#xff0c;快速排序&#xff0c;归并排序&#xff0c;选择排序等。今天来讲一下最简单的排序&#xff1a;冒泡排序。这种排序的方法效率极其低下。 假设有一个整型数组&#xff1a; int arr[…...

在Linux上安装NVM(Node Version Manager)

在Linux系统上&#xff0c;使用NVM&#xff08;Node Version Manager&#xff09;是管理和切换Node.js版本的一种便捷方式。以下是在Linux上安装NVM的步骤&#xff1a; 1. 下载并安装NVM 使用curl或wget下载并运行NVM的安装脚本。选择一种方式执行以下命令之一&#xff1a; …...

常用两种Linux命令生成器

在Linux中&#xff0c;可以使用多种命令来生成随机密码。以下是其中两种常用的命令&#xff1a; 1.pwgen&#xff1a;这个命令可以生成随机、无意义的但容易发音的密码。生成的密码可以只包含小写字母、大小写混合或数字。大写字母和数字会以一种便于记忆的方式放置&#xff0…...

【OAuth2】授权框架的四种授权方式详解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《OAuth 2》。&#x1f3af;&#x1f3af; &#x1…...

AI数字人不间断直播是什么?数字人直播带货如何搭建?

随着电商行业的崛起&#xff0c;数字人直播成为了最为热门的直播方式之一。数字人直播利用AI技术创建出的数字人进行直播&#xff0c;给观众带来了全新的视觉体验。 一、AI数字人无限播&#xff08;数字人SaaS系统VX&#xff1a;zhibo175&#xff09;是什么&#xff1f; AI数字…...

真菌基因组研究高分策略(二):比较基因组揭示寄主外生菌根真菌基因组的动态进化

在表征外生菌根&#xff08;ECM&#xff09;真菌的“共生工具包”方面的研究已经取得了重大进展&#xff0c;但宿主特异性如何被编码到ECM真菌基因组中仍知之甚少。2021年发表于《New Phytologist》期刊的文章对ECM真菌宿主特异性和通用性进行了比较基因组分析&#xff0c;重点…...

uni-app之HelloWorld实现

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…...

CVE-2023-49898 Apache incubator-streampark 远程命令执行漏洞

项目介绍 Apache Flink 和 Apache Spark 被广泛用作下一代大数据流计算引擎。基于大量优秀经验结合最佳实践&#xff0c;我们将任务部署和运行时参数提取到配置文件中。这样&#xff0c;带有开箱即用连接器的易于使用的 RuntimeContext 将带来更轻松、更高效的任务开发体验。它…...

即将来临的2024年,汽车战场再起波澜?

我们来简要概况一下11月主流车企的销量表现&#xff1a; 根据数据显示&#xff0c;11月吉利集团总销量29.32万辆&#xff0c;同比增长28%。这在当月国内主流车企中综合实力凌厉&#xff0c;可谓表现得体。而与吉利直接竞争的比亚迪&#xff0c;尽管数据未公布&#xff0c;但我们…...

Python 爬虫之下载视频(二)

爬取某Y的视频链接和标题 文章目录 爬取某Y的视频链接和标题前言一、基本思路二、程序解析阶段三、程序处理阶段总结 前言 这篇内容就简单给大家写个如何从网页上爬取某B主 主页 页面上所有的视频链接和视频标题。 这篇是基础好好看&#xff0c;下篇会根据这篇的结果做一个批…...

智能优化算法应用:基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于原子轨道搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.原子轨道搜索算法4.实验参数设定…...

[机器人-2]:开源MIT Min cheetah机械狗设计(二):机械结构设计

目录 1、四肢朝向的选择 2、电机布局形式的选择 3、电机的选型及测试&#xff08;非常重要&#xff09; 4、结构优化 5、尺寸效应 6、其他 1、四肢朝向的选择 机械狗的结构设计&#xff0c;第一个摆在我们面前的就说四肢的朝向问题&#xff0c;如下图&#xff0c;我们是…...

用友U8+CRM help2 任意文件读取漏洞复现

0x01 产品简介 用友U8 CRM客户关系管理系统是一款专业的企业级CRM软件&#xff0c;旨在帮助企业高效管理客户关系、提升销售业绩和提供优质的客户服务。 0x02 漏洞概述 用友 U8 CRM客户关系管理系统 help2接口处存在任意文件读取漏洞&#xff0c;攻击者通过漏洞可以获取到服…...

freeRTOS实时操作系统学习笔记

温馨提示&#xff1a;点击图片查看大图更清晰 —————————————————————————————↑↑↑上方资源下载后可获取xmind原文件。 1、freeRTOS移植和配置脑图 2、内核源码学习...

解决虚拟机卡顿、卡死、待机后不动的情况(真实有效

本人环境&#xff1a; VM workstation 17.5 ubuntu 22.04 虚拟机配置&#xff1a;4核 4g issue&#xff1a; 出现开机卡死不动运行一段时间&#xff0c;可能半小时不到&#xff0c;就页面卡死不动经常需要关机重启才解决&#xff0c;可能没有解决 1.配置虚拟化引擎 这一步我称…...

【MybatisPlus快速入门】(3)SpringBoot整合MybatisPlus 之 Lombok插件安装及MybatisPlus分页代码示例

目录 1.Lombok1.1 步骤1:添加lombok依赖 2.2 步骤2:安装Lombok的插件1.3 步骤3:模型类上添加注解2 分页功能2.1 步骤1:调用方法传入参数获取返回值2.2步骤2:设置分页拦截器2.3 步骤3:运行测试程序 之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介&#xff0c;在这一节…...

SpaceDesk如何连接平板/PC(生产力副屏)

1、下载安装 分为安卓端和PC端&#xff0c;两个设备都需要安装对应的软件。 SpaceDesk官网 https://link.zhihu.com/?targethttp%3A//spacedesk.net/ 需要魔法上网。安装过程比较简单&#xff0c;无脑下一步即可。 我已经把安装包准备好了&#xff0c;如果不想自己找&#…...

61.SVN版本控制系统

SVN&#xff08;Subversion&#xff09;是一种集中式版本控制系统&#xff0c;它有一个中央仓库用于存储代码库的完整历史记录。相对于分布式版本控制系统&#xff08;例如 Git&#xff09;&#xff0c;SVN 不支持本地仓库。 一、SVN 安装。 &#xff08;1&#xff09;在windo…...

操作系统 内存管理篇

一.程序的装入和链接 装入方式&#xff1a; 链接方式&#xff1a; 二.进程的内存映像 三.内存的分配 1.连续分配 分配方式&#xff1a; 2.不连续分配 分页&#xff1a;页面大小一致 引入快表&#xff08;和 cache 处理思路一致&#xff09; 升级到二级页表 分段&#xff1a;…...

深度学习中用来训练的train.py 探究学习2.0( 数据预处理)

数据预处理 下列代码为train.py中常见的一些数据处理方法 train_transform transforms.Compose([transforms.Resize((224, 224)),transforms.RandomVerticalFlip(),# 随机旋转&#xff0c;-45度到45度之间随机选transforms.RandomRotation(45),# 从中心开始裁剪transforms.C…...

【独家首发】ElevenLabs尚未官方支持的希伯来文增强模式:基于phoneme-level微调的48小时快速部署方案

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;希伯来文语音合成的技术挑战与ElevenLabs生态定位 希伯来文是一种自右向左&#xff08;RTL&#xff09;书写的辅音音素文字&#xff0c;其语音合成面临多重语言学与工程学挑战&#xff1a;元音符号&…...

STM32单片机如何用IRIG-B解码模块实现10ns级高精度授时(附完整驱动代码)

STM32单片机如何用IRIG-B解码模块实现10ns级高精度授时&#xff08;附完整驱动代码&#xff09; 在工业自动化、电力系统同步、通信基站等对时间精度要求苛刻的领域&#xff0c;微秒级甚至毫秒级的时钟同步已经无法满足需求。IRIG-B作为一种标准时间码格式&#xff0c;通过解码…...

双边滤波Bilateral_Filter(调参的重要性)

一、双边滤波的基本概念 1.双边滤波是一种非线性滤波 2.双边滤波的作用是保边降噪平滑滤波器 3.卷积核大小&#xff1a;33、55、77这个是比较常用的卷积核。二、双边滤波的关键参数 1.空间方差 用用控制空间位置差异的平滑程度。 空间方差越大&#xff0c;空间高斯的影响范围越…...

实战指南:深度掌握5大梯度下降优化器的可视化秘籍

实战指南&#xff1a;深度掌握5大梯度下降优化器的可视化秘籍 【免费下载链接】gradient_descent_viz interactive visualization of 5 popular gradient descent methods with step-by-step illustration and hyperparameter tuning UI 项目地址: https://gitcode.com/gh_mi…...

Linux内核模块多文件编译:从Kbuild原理到工程实践

1. 项目概述&#xff1a;从单文件到多文件内核模块的进阶之路搞内核模块开发的朋友&#xff0c;估计都是从经典的“Hello World”单文件模块开始的。一个hello.c&#xff0c;配上几行简单的Makefile&#xff0c;insmod一下看到打印信息&#xff0c;成就感就来了。但当你真正想干…...

C语言实现热水器温度控制PID算法详解与嵌入式实战

1. 项目概述与核心价值最近在整理一些嵌入式开发的老项目&#xff0c;翻出来一个用C语言写的热水器温度控制PID算法示例。这玩意儿虽然代码量不大&#xff0c;但麻雀虽小五脏俱全&#xff0c;把PID控制的核心思想、参数整定、抗积分饱和这些关键点都体现出来了。对于刚接触自动…...

Taotoken用量看板如何帮助团队精细化管控大模型成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken用量看板如何帮助团队精细化管控大模型成本 对于团队技术负责人或项目管理者而言&#xff0c;大模型API的调用成本正成为一…...

2026年网络安全行业发展全景解析(技术从业者必看)_最新网络行业发展锐评

2026年网络安全行业发展全景解析&#xff08;技术从业者必看&#xff09; 摘要&#xff1a;随着数字化转型进入深水区&#xff0c;AI、云原生、物联网等技术的普及&#xff0c;网络安全已从“辅助保障”升级为“核心刚需”。 一、行业发展现状&#xff1a;政策与市场双轮驱动&…...

声明式工作流编排框架:从计划到执行的自动化实践

1. 项目概述&#xff1a;从“计划清单”到“框架”的蜕变如果你和我一样&#xff0c;在职业生涯中经历过从零到一构建复杂应用&#xff0c;或者维护过多个技术栈各异、需求多变的项目&#xff0c;那你一定对“计划”和“清单”这两个词深有感触。我们每天都在做计划&#xff0c…...

大语言模型记忆增强框架:LightMem原理、实现与工程实践

1. 项目概述&#xff1a;当大模型遇上“记忆”瓶颈最近在折腾大语言模型&#xff08;LLM&#xff09;应用开发的朋友&#xff0c;估计都遇到过同一个头疼的问题&#xff1a;模型记不住事儿。你精心设计了一个对话系统&#xff0c;希望它能记住用户的历史偏好&#xff0c;比如“…...