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

Linux基础30-C语言篇之冒泡排序【入门级】

数组的典型应用:冒泡排序
向后冒泡
  • 思想:
    • 一次只排好一个数,针对n个数,最差情况需要n-1次就可以排好
    • 每次排序将相邻数据两两比较,将较大或者较小的数据向后交换,等所有数据比较完成,较大或者较小的数就会出现在最后,这也是该数应该有的位置
    • 在余下的数中,再次应用第2步的操作,直到只剩下1个数。
向前冒泡
  • 思想:
    • 一次只排好一个数,针对n个数,最差情况需要n-1次就可以排好
    • 每次排序假定第一个元素是最大或者最小的,用第一个元素的后面的元素一一与第一个元素比较,遇到较大或者较小的和第一个元素交换,访问完数组的最后一个元素,就排好了一个数
    • 在余下的数中,再次应用第2步的操作,直到只剩下1个数。
向前冒泡

原始数列:12345->54321

排序轮数:51234-54123-54312-54321得到:轮数=元素个数-1=4

比较次数:

​ ①1 2 3 4 5 5 1 2 3 4(第1轮比4次)5 -1 -0= 4 5-0

​ ② 1 2 3 4 55 41 2 3(第2轮比3次)5 - 1 -1 = 3 5 -1

​ ③ 1 2 3 4 55 4 3 1 2 (第3轮比2次)5 -1 -2 = 2 5-2

​ ④ 1 2 3 4 55 4 3 2 1 (第4轮比1次)5 - 1 -3 = 1 5-3

​ 得到每一轮的比较次数:每一轮比较次数 = 元素个数 - 1 - 轮数,轮数从0开始

代码:

 #include <stdio.h>int main(int argc,char *argv[]){// 创建一个数组,用来存储排序的序列int arr[10];// 定义三个变量 i:比较的轮数(0~len-1)j:每一轮比较的次数(0~len-1-i)temp:临时变量,用来实
现两个变量值的交换int i,j,temp;printf("请输入10个整数:\n");// 计算数组的大小int len = sizeof(arr) / sizeof(arr[0]);// 通过循环录入数据for(i = 0; i < len; i++){scanf("%d",&arr[i]);}printf("\n");// 冒泡排序// 第一次循环:控制比较的轮数:轮数 = len -1;for(i = 0; i < len - 1; i++){// 第二层循环:控制每一轮的比较次数:次数 = len - 1 - ifor(j = 0; j < len - 1 - i; j++){// 相邻两个数进行比较,满足条件交换位置if(arr[j] > arr[j+1])  // 1 2{temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}printf("冒泡排序后的数列:\n");for(i = 0; i < len; i++){printf("%4d",arr[i]);}printf("\n");return 0;}

相关文章:

Linux基础30-C语言篇之冒泡排序【入门级】

数组的典型应用&#xff1a;冒泡排序 向后冒泡 思想&#xff1a; 一次只排好一个数&#xff0c;针对n个数&#xff0c;最差情况需要n-1次就可以排好每次排序将相邻数据两两比较&#xff0c;将较大或者较小的数据向后交换&#xff0c;等所有数据比较完成&#xff0c;较大或者较…...

FFmpeg+vvenc实现H.266的视频编解码教程

Linux系统&#xff1a;FFmpegvvenc实现H.266的视频编解码教程&#xff08;视频压缩&#xff09; 关键网址 ffmpeg目前支持libvvenc&#xff0c;因此配置好libvvenc只会在一些make、sudo make install命令时遇到问题&#xff0c;例如默认安装或配置路径指定错误、ffmpeg版本、v…...

0x01 html和css

css 对于三种css使用方式&#xff1a; 第一种&#xff1a;行内样式 <span style"color: grey;">2024年05月15日 20:07</span>第二种&#xff1a;内部样式 <!DOCTYPE html> <html lang"en"> <head>...<style>span{…...

【大模型】量化、剪枝、蒸馏

大模型的量化、剪枝和蒸馏是三种常用的模型优化技术&#xff0c;旨在减少模型的复杂性&#xff0c;降低计算资源消耗&#xff0c;并加速推理过程。下面是每种技术的详细介绍&#xff1a; 1. 量化&#xff08;Quantization&#xff09; 量化是将浮点数表示的模型参数&#xff…...

Imagination GPU 3D Graphics Wrokload

本次分享Imagination GPU 的3D 图像处理负载流程。 总的分为两个阶段 第一阶段&#xff1a;Geometry Processing Phase 1.Input Assembly 输入装配。读取原始图元 2.Vertex Shading 顶点着色。对单个顶点输入运行shader 3.Geometry Shading 几何着色。对所有原始数据&…...

excel单、双字节字符转换函数(中英文输入法符号转换)

在Excel中通常使用函数WIDECHAR和ASC来实现单、双字节字符之间的转换。其中 WIDECHAR函数将所有的字符转换为双字节&#xff0c;ASC函数将所有的字符转换为单字节 首先来解释一下单双字节的含义。单字节一般对应英文输入法的输入&#xff0c;如英文字母&#xff0c;英文输入法…...

湘潭大学计算机复试详细攻略(调剂)

一&#xff0c;写在前面的话 ① 首先&#xff0c;能完成考试初试来到这里的都是勇士。不管结果如何&#xff0c;不管成绩如何。我都在这里真心的祝福你以后一帆风顺。 ② 目前学历贬值严重&#xff0c;如果是成绩不理想的话&#xff0c;我建议能工作就去工作&#xff0c;工作不…...

如何看待 Kaiming He 最新提出的 Fractal Generative Models ?

何恺明团队提出的分形生成模型(Fractal Generative Models) 引发了广泛关注,其核心思想是通过递归调用生成模型模块构建自相似结构,类似数学中的分形概念(如雪花结构),从而高效生成高分辨率数据(如图像)。 Fractal Generative Models即分形生成模型,是一种新型的生成…...

AOP进阶-04.切入点表达式-@annotation

一.annotation注解 我们在最后一个切入点表达式中要匹配多个无规则的方法&#xff0c;这样的写法有些冗余了。而annotation注解就是来解决这一问题的。 annotation注解使用特定的注解来匹配方法。我们首先自定义一个注解&#xff0c;该注解就相当于一个标签&#xff0c;目标对…...

C高级(shell)

思维导图...

通过指针传递给函数

在 C 语言中&#xff0c;除了结构体&#xff0c;还有多种数据类型可以通过指针传递给函数&#xff0c;以下为你详细介绍&#xff1a; 1. 基本数据类型 整数类型 像 int、short、long 等整数类型都能通过指针传递给函数。这种方式常用于函数需要修改调用者中整数变量的值。 收…...

Ubuntu20.04之VNC的安装使用与常见问题

Ubuntu20.04之VNC的安装与使用 安装图形桌面选择安装gnome桌面选择安装xface桌面 VNC-Server安装配置开机自启 VNC Clientroot用户无法登入问题临时方案永久方案 安装图形桌面 Ubuntu20.04主流的图形桌面有gnome和xface两种&#xff0c;两种桌面的安装方式我都会写&#xff0c…...

15.5 基于 RetrievalQA 的销售话术增强系统实战:构建智能销售大脑

基于 RetrievalQA 的销售话术增强系统实战:构建智能销售大脑 关键词:RetrievalQA 应用实战、销售知识增强、语义检索优化、上下文感知问答、多源知识融合 1. RetrievalQA 技术原理与销售场景适配 1.1 RetrievalQA 核心工作机制 #mermaid-svg-VL2yIusgl4oprXUr {font-family…...

Vue 刷新当前组件的5种方式

一&#xff0c;使用 location.reload() 这是最直接的方法&#xff0c;它会像用户点击浏览器的刷新按钮一样重载页面。 location.reload();二&#xff0c;使用路由刷新当前页面 如果当前组件是通过路由加载的&#xff0c;可以通过路由的 push 方法重新加载当前路由。 this.$…...

Python 科学计算

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

从同步到异步:Vue 3 的异步更新策略与 `tick` 机制

1. 引言&#xff1a;Vue 3 的异步更新&#xff0c;我们真的了解吗&#xff1f; 在日常开发中&#xff0c;我们都知道 Vue 3 是异步更新的。大多数时候&#xff0c;我们只是简单地使用 ref、reactive、computed 等 API&#xff0c;享受着 Vue 的响应式系统带来的便利。然而&…...

2024中国信通院“集智”蓝皮书合集(附下载)

【目 录】 1. 数字政府一体化建设蓝皮书&#xff08;2024年&#xff09; 2. 数字乡村发展实践蓝皮书&#xff08;2023年&#xff09; 3. 中国工业互联网发展成效评估报告&#xff08;2024年&#xff09; 4. 云计算蓝皮书&#xff08;2024年&#xff09; 5. 具身智能发展报告…...

muduo源码阅读:linux timefd定时器

⭐timerfd timerfd 是Linux一个定时器接口&#xff0c;它基于文件描述符工作&#xff0c;并通过该文件描述符的可读事件进行超时通知。可以方便地与select、poll和epoll等I/O多路复用机制集成&#xff0c;从而在没有处理事件时阻塞程序执行&#xff0c;实现高效的零轮询编程模…...

nvm 1.2.2 报错解决方法 The system cannot find the file specified.

安装了最新版本nvn1.2.2后&#xff0c;安装老版本node时报错&#xff08;安装新版本没问题&#xff09;&#xff0c;报错内容如下&#xff1a; error installing 14.16.0: open C:\Users\admin\AppData\Local\Temp\nvm-npm-430098699\npm-v6.14.11.zip: The system cannot fin…...

学习Python的基本入门知识

学习Python的入门知识可以从以下几个方面开始&#xff1a; ### 1. **Python简介** - **Python** 是一种高级、解释型、通用的编程语言&#xff0c;由Guido van Rossum于1989年发布。 - 它以简洁、易读的语法著称&#xff0c;适合初学者。 - 广泛应用于Web开发、数据分…...

web安全——分析应用程序

文章目录 一、确定用户输入入口点二、确定服务端技术三、解析受攻击面 一、确定用户输入入口点 在检查枚举应用程序功能时生成的HTTP请求的过程中&#xff0c;用户输入入口点包括&#xff1a; URL文件路径 通常&#xff0c;在查询字符?之前的URL部分并不视为用户输入入口&am…...

OpenEuler学习笔记(三十五):搭建代码托管服务器

以下是主流的代码托管软件分类及推荐&#xff0c;涵盖自托管和云端方案&#xff0c;您可根据团队规模、功能需求及资源情况选择&#xff1a; 一、自托管代码托管平台&#xff08;可私有部署&#xff09; 1. GitLab 简介: 功能全面的 DevOps 平台&#xff0c;支持代码托管、C…...

平台设备驱动之gpio子系统(写驱动实现在/sys/...目录下用echo命令点灯)

1、 关键函数&#xff08;include/linux 及 driver目录下&#xff09; ​ module_platform_driver(leds_drv); //平台设备驱动入口//获取匹配成功后设备树节点中的 property ​ of_get_named_gpio_flags(node, "led_gpio", 0, &flags); //在/sys/目录下创建文…...

PS渐变工具

渐变工具&#xff1a;&#xff08;颜色条 起点到终点 为 前景色到背景色&#xff09; 渐变shift&#xff1a;垂直、水平、45度 渐变工具–》仿色&#xff1a;让渐变变得细腻。仿色值高&#xff0c;过渡柔和&#xff0c;仿色值低&#xff0c;过渡粗糙 渐变工具–》渐变编辑器&am…...

JavaScript将:;隔开的字符串转换为json格式。使用正则表达式匹配键值对,并构建对象。多用于解析cssText为style Object对象

// 使用正则表达式匹配键值对&#xff0c;并构建对象 let string2Json(s)>{const r {};s.replace(/&#xff1b;/g, ;).replace(/\;/g, \n).replace(/&#xff1a;/g, :).replace(/\n/g, \n)//合并多个换行符.split(\n).forEach(item > {const [k, v] item.split(:);(k…...

2025年追觅科技社招校招入职测评北森题库商业推理测试内容与技巧

在追觅科技的招聘流程中&#xff0c;无论是校园招聘还是社会招聘&#xff0c;应聘者都需要通过北森测评题库的商业推理部分。这部分的测评旨在评估应聘者的商业推理能力&#xff0c;是评估考生综合能力的重要工具。考试时间为40分钟&#xff0c;需要完成28题&#xff0c;题型以…...

AI大模型-提示工程学习笔记19-自我反思

目录 1. 自我反思的核心思想 (1) LLM 的局限性 (2) Reflexion 的解决方案 2. Reflexion 的工作流程 (1) 任务输入 (2) 初始生成 (3) 反思 (Reflection) (4) 调整与改进 (5) 迭代 (6) 结果输出 3. Reflexion 的关键组件 (1) 大语言模型 (LLM) (2) 反思者 (Reflector…...

【工具变量】公司企业数字领导力(2004-2023年)

数据简介&#xff1a;企业数字化领导力是指在数字经济时代&#xff0c;领导者通过战略性地使用数字资产、引领组织变革&#xff0c;使企业在数字化环境中获得持续成功的能力。对于上市公司而言&#xff0c;这种领导力尤为重要&#xff0c;因为它直接关系到企业的战略方向、市场…...

Android 10.0 Settings中系统菜单去掉备份二级菜单

1.前言 在10.0的系统rom定制化开发中,在系统Settings开发过程中,会发现在settings中的系统菜单中需要去掉 备份这个菜单,接下来就需要分析下系统菜单中的备份菜单的相关功能,然后实现去掉备份菜单的功能 2.Settings中系统菜单去掉备份二级菜单的核心类 packages/apps/Se…...

C++ | 设计模式 | 代理模式

代理模式&#xff08;Proxy Pattern&#xff09; 代理模式是一种结构型设计模式 &#xff0c;它为某个对象提供一个代理&#xff0c;以控制对该对象的访问。代理模式可以在不改变原始对象的情况下&#xff0c;通过引入代理对象来扩展功能或控制对原始对象的访问。 核心思想 代…...