2023-04-21 学习记录--C/C++-实现升序降序(冒泡法/沉底法)

news2024/11/18 17:53:26

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、冒泡法(沉底法) —— 升序 ⭐️

在这里插入图片描述

(一)、思路

从左到右:

  • 1、第一个与第二个比较,若第一个>第二个,就交换位置;再第二个与第三个比较,若第二个>第三个,就交换位置;再第三个。。。直至把最大项放到了最后一个
  • 2、除去最后一个数,再重复第一步,直至把倒数第二大的数放到倒数第二个
  • 3、除去倒数第二个数,再重复第一步,直至把倒数第三小的数放到倒数第三个
    。。。
    依次类推,达到升序,因为升序由小到大排序。

(二)、举例一

需求:将 83, 96, 72, 35, 24 五个数使用冒泡法(沉底法)实现升序(由小到大排序)。

注意:如下代码里的 4=数组总长度-15=数组总长度,其实可以直接用数组总长度进行替换,我这里之所以写成数字,只是为了方便逻辑解释哦~

/**
 * 将 83, 96, 72, 35, 24 五个数使用冒泡法(沉底法)实现升序(由小到大排序)。
 */

#include <stdio.h>
int main()
{
    /** 使用变量前必须先定义 */
    int a[5] = {83, 96, 72, 35, 24}; // 自定义一个含5个整数的数组a
    int i, j, t;                     // t: 交换数组元素位置的中间变量

    /** 使用冒泡法(沉底法)实现升序 */
    // 第一层循环(循环4次,i=0,1,2,3)
    for (i = 0; i < 4; i++)
        // 第二层循环(循环4-i次)
        for (j = 0; j < 4 - i; j++)
            // 第二层循环的循环体(若相邻两项中 左项>右项,则交换位置,因为升序是由小到大排序滴)
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }

    /** 输出结果 */
    printf("最终结果为:\n"); // 提示信息
    for (i = 0; i < 5; i++)
        printf("%d\t", a[i]); // for循环依次输出最终数组里的值
    printf("\n");             // 注意:这里必须单独提一个输出语句来输出换行符(\n),不然末尾默认会被加上符号“%”

    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

(三)、举例二

需求:输入10个地区的面积(面积为整数),使用冒泡法(沉底法)对它们由小到大排序并输出排序后的结果。

/**
 * 需求:输入10个地区的面积(面积为整数),使用冒泡法(沉底法)对它们由小到大排序并输出排序后的结果。
 */
#include <stdio.h>
int main()
{
    /** 使用变量前必须先定义 */
    int a[10]; // 定义一个包含10个整数的数组a
    int i, j, t;

    /** 让用户输入10个面积 */
    printf("请输入10个面积:\n"); // 提示信息
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]); // 用户输入,并将输入结果依次赋值给数组a里的各数组元素

    /** 使用冒泡法(沉底法)实现升序 */
    // 第一层循环(循环9次)
    for (i = 0; i < 9; i++)
        // 第二层循环(循环9-i次)
        for (j = 0; j < 9 - i; j++)
            // 第二层循环的循环体
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }

    /** 输出结果 */
    printf("排序后的面积依次是:\n"); // 提示信息
    for (i = 0; i < 10; i++)
        printf("%d\t", a[i]); // 依次输出
    printf("\n");             // 注意:这里必须单独提一个输出语句来输出换行符(\n),不然末尾默认会被加上符号“%”

    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

二、冒泡法(沉底法) —— 降序 ⭐️

在这里插入图片描述

(一)、思路

从左到右:

  • 1、第一个与第二个比较,若第一个<第二个,就交换位置;再第二个与第三个比较,若第二个<第三个,就交换位置;再第三个。。。直至把最小项放到了最后一个
  • 2、除去最后一个数,再重复第一步,直至把倒数第二小的数放到倒数第二个
  • 3、除去倒数第二个数,再重复第一步,直至把倒数第三小的数放到倒数第三个
    。。。
    依次类推,达到降序,因为降序由大到小排序。

(二)、举例

需求:将 83, 96, 72, 35, 24 五个数使用冒泡法(沉底法)实现降序(由大到小排序)。

注意:如下代码里的 4=数组总长度-15=数组总长度,其实可以直接用数组总长度进行替换,我这里之所以写成数字,只是为了方便逻辑解释哦~

/**
 * 将 83, 96, 72, 35, 24 五个数使用冒泡法(沉底法)实现降序(由大到小排序)。
 */

#include <stdio.h>
int main()
{
    /** 使用变量前必须先定义 */
    int a[5] = {83, 96, 72, 35, 24}; // 自定义一个含5个整数的数组a
    int i, j, t;                     // t: 交换数组元素位置的中间变量

    /** 使用冒泡法(沉底法)实现降序 */
    // 第一层循环(循环4次,i=0,1,2,3)
    for (i = 0; i < 4; i++)
        // 第二层循环(循环4-i次)
        for (j = 0; j < 4 - i; j++)
            // 第二层循环的循环体(若相邻两项中 左项<右项,则交换位置,因为降序是由大到小排序滴)
            if (a[j] < a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }

    /** 输出结果 */
    printf("最终结果为:\n"); // 提示信息
    for (i = 0; i < 5; i++)
        printf("%d\t", a[i]); // for循环依次输出最终数组里的值
    printf("\n");             // 注意:这里必须单独提一个输出语句来输出换行符(\n),不然末尾默认会被加上符号“%”

    /** 程序正常运行结束 */
    return 0;
}

在这里插入图片描述

三、总结 ⭐️

在这里插入图片描述

如下是我自己通过反复敲代码验证,画出的构图和梳理的归纳总结🌈,如若有幸可以帮到各位小可爱,我会很开心滴哦;如若有小可爱发现错误,也欢迎评论区指证一下哦,谢谢啦~ 💐

在这里插入图片描述

这篇笔记主要是为了对升序降序的处理思维做一个梳理,代码可能没那么多高端操作,嘿嘿~

下一篇:C/C++ 实现升序降序(选择法)

在这里插入图片描述

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

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

相关文章

Ceph入门到精通-Ceph之对象存储网关RADOS Gateway(RGW)

一、Ceph整体架构及RGW在Ceph中的位置 1.Ceph的整体架构 Ceph是一个统一的、分布式的的存储系统&#xff0c;具有优秀的性能、可靠性和可扩展性。Ceph支持对象存储&#xff08;RADOSGW&#xff09;、块存储&#xff08;RBD&#xff09;和文件存储&#xff08;CephFS&#xff…

asp.net+C#医院人事办公自动化OA系统设计

3.3.2 普通用户 普通用户只能查看自己的信息&#xff0c;修改登录密码&#xff0c;查看通知公告信息&#xff0c;公文发送信息&#xff0c;下载办公文件&#xff0c;邮件发送接收&#xff0c;会议记录信息管理&#xff0c;留言交流等功能。办公OA系统主要的功能是实现员工资料的…

【OS实验】【学习笔记】

文章目录 零、实验参考实验1 熟悉实验环境实验2 操作系统的引导实验3 系统调用实验4 进程运行轨迹的跟踪与统计实验5 基于内核栈切换的进程切换实验6 信号量的实现和应用实验7 地址映射与共享实验8 终端设备的控制实验9 proc文件系统的实现Reference 零、实验参考 &#x1f52…

SpingBoot使用Mybatis-Plus操作多数据源,同时操作sqlserver和mysql

目录 需求场景 需求逻辑&#xff1a; 难点&#xff1a; 说明&#xff1a; 代码 pom.xml依赖只贴sqlserver的 文件目录 yml配置文件 DataSource自定义注解 DataSourceAspect类文件 DruidConfig类 DruidProperties类 DynamicDataSource DynamicDataSourceContextHo…

03-java数组的使用

概念 数组就是存储数据长度固定的容器&#xff0c;存储多个数据的数据类型要一致。 数组的定义格式 // 第一种格式 // 数据类型[] 数组名 int[] arr; double[] arr; char[] arr;// 第二种格式 // 数据类型 数组名[] int arr[]; double arr[]; char arr[];数组…

记录解决Maven依赖冲突导致的NoSuchMethodError问题的过程

摘要 本文记录了解决 Maven 依赖冲突导致的 NoSuchMethodError 问题的过程。问题出现的原因是多个库包含了 Jackson 库&#xff0c;导致 Jackson 序列化与反序列化时出现 NoSuchMethodError 异常。通过查看依赖树&#xff0c;排除冲突库的方法&#xff0c;最终成功解决了该问题…

在职读研理论结合实践,社科院与杜兰大学金融管理硕士助你完成质的飞跃

我们知道&#xff0c;学习不能停留在理论层面&#xff0c;要用于实践才能真正的消化吸收。学习的目的在于运用&#xff0c;实践是检验学习成果的练兵场。社科院与杜兰大学金融管理硕士项目的课程中美授课教师在项目管理委员会的指导下&#xff0c;负责制订金融管理硕士教学方案…

【工程化】之5分钟发布一个Npm包

NPM是一个包管理器&#xff0c; 为js开发人员提供可以在项目中使用的模块&#xff0c;业界有很多流行的开源库&#xff0c;如Lodash&#xff0c;在我们内部也免不了通过对能力的封装打包&#xff0c;快速复用到其他地方去&#xff0c;使用NPM包很简单。您只需使用NPM安装包&…

SHELL中for循环和IF判断的使用

1。编写脚本for1.sh,使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如: test1、test2、test3、.....、 test10 2.编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性&#xff0c;网段前3段由用户输…

stable- diffusion新版本V2效果有提升吗?

之前版本是最初版本&#xff0c;不是V2&#xff0c;那么这里就新版本V2进行系列试验&#xff0c;如下&#xff0c;附代码及link 1、text2img from diffusers import StableDiffusionPipeline, DPMSolverMultistepSchedulermodel_id "stabilityai/stable-diffusion-2-1&…

在android项目上集成libyuv库以及使用libyuv库完成camera的缩放,旋转,翻转,裁剪操作

目录 一、下拉google官方的libyuv库代码 二、在android项目中集成libyuv库 1.环境配置 2.拷贝libyuv源码文件 ​编辑3.配置cmake libyuv相关的链接编译等 三、使用libyuv库 1.libyuv库完成camera的旋转 2.libyuv库实现翻转 3.libyuv库实现缩放 4.libyuv库实现裁剪 一…

九龙证券|多巨头竞相布局这个热门赛道,机构一致看好的概念股

华为高阶智能驾驭体系ADS 2.0版本发布。 早前&#xff0c;华为在2023华为智能轿车解决方案发布会上&#xff0c;发布了高阶智能驾驭体系 ADS 2.0。新体系将由 AITO 问界 M5 高阶智能驾驭版首发&#xff0c;并已适配阿维塔 11 全系列以及极狐阿尔法 S 全新 Hi 版等车型。 最近&…

JDBC(java数据库连接)—MySQL

文章目录 1.定义2.优势3.环境准备4.使用jdbc&#xff08;java程序操作数据库&#xff09;5.使用jdbc的操作步骤 1.定义 jdbc是一种用于执行SQL语句的java api&#xff0c;它是java中的数据库连接规范&#xff0c;为java开发人员操作数据库提供了一个标准的api&#xff0c;可以…

【Linux】系统文件接口

目录 一、C文件接口 1、fopen 2、fprintf 3、snprintf 二、系统文件IO 1、open 2、write 3、read 4、C文件接口与系统文件IO的关系 一、C文件接口 1、fopen FILE *fopen(const char *path, const char *mode); fopen 函数返回值类型为 FILE 。参数列表中&#xff0c…

优加DaaS背后,看见新的营销潮

DaaS、融合开放&#xff0c;这是京东云优加对外传递出来的两个最清晰的声音。前者对应的是能力和边界&#xff0c;后者对应的是态度和打法。两者结合&#xff0c;恰构成了京东云优加&#xff0c;或者说京东在营销侧的未来想象力。 作者|皮爷 出品|产业家 “今年我们有接近60%以…

第五章 工厂模式

文章目录 一、简单工厂模式1、传统方式实现披萨订购( 可以忽略)披萨父类 Pizza子类胡椒披萨 PepperPizza子类印度披萨 GreekPizza订购披萨 OrderPizza订购披萨的 客户端 PizzaStore运行结果传统的方式的优缺点&#xff0c;新增子类需要修改的地方牵扯太多传统方式的究极耦合 2、…

YOLOv8 更换骨干网络之 MobileNetV3

论文地址:https://arxiv.org/abs/1905.02244 代码地址:https://github.com/xiaolai-sqlai/mobilenetv3 我们展示了基于互补搜索技术和新颖架构设计相结合的下一代 MobileNets。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和 NetAdapt算法对移动设计如何协同工作,利用互…

BswM模块之Ecu State Handling

文章目录 前言一、ESH是什么&#xff1f;二、基于BswM管理的ECU状态切换流程1.ECU启动2.ECU关闭 总结 前言 BswM – 基础软件模式管理模块&#xff0c; 它的职责是基于简单规则的BSW模块仲裁来自应用层sw - c或其他模块的模式请求&#xff0c;并根据仲裁结果进行相应的操作。 …

QT QPainter 绘制基本图形元件简介

1.基本图形元件 QPainter 提供了很多绘制基本图形的功能&#xff0c;包括点、直线、椭圆、矩形、曲线等&#xff0c;由这些基本的图形可以构成复杂的图形。QPainter 中提供的绘制基本图元的函数如下表所示。每个函数基本上都有多种参数形式&#xff0c;这里只列出函数名&#x…

Elastic Common Schema 和 OpenTelemetry — 无需供应商锁定即可获得更好的可观察性和安全性的途径

作者&#xff1a;Elastic 可观察性和安全团队 在 KubeCon Europe 上&#xff0c;宣布 Elastic Common Schema (ECS) 已被 OpenTelemetry (OTel) 接受作为对该项目的贡献。 目标是将 ECS 和 OpenTelemetry 的语义约定 (SemConv) 融合到一个由 OpenTelemetry 维护的开放模式中。 …