2023-04-21 学习记录--C/C++-实现升序降序(选择法)

news2024/11/19 17:47:58

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

一、选择法 —— 升序 ⭐️

在这里插入图片描述

(一)、思路

从左到右,除最后一个数 依次作为 “当前数”其右边所有数 分别比较:

  • 若比右边数,则与该右边数交换位置;否则不交换位置(因为升序是由小到大排序滴)。

(二)、举例一

需求:将 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;                     // i:第一层循环里-数组元素的索引值 j:第二层循环里-数组元素的索引值 t:交换数组元素位置的中间变量

    /** 使用选择法实现升序:从左到右,除最后一个数依次作为“当前数”与其右边所有数分别比较:若比右边数大,则与该右边数交换位置;否则不交换位置 */
    // 第一层循环:循环4(=数组a长度-1)次(因为最后一个数的右边没有值了,所以“当前数”为最后一个数时 不用再循环一次了。虽然这儿的4替换成>=4的任何数 对结果无影响(因为第二层循环做了限制),但为了避免不必要的循环,这里最好写4)
    for (i = 0; i < 4; i++) // 因为第一个数组元素的索引值为0,所以i的初始值为0;因为循环4次,所有循环执行条件是: i<4;i++:每次循环一次后i加1
        // 第二层循环:循环5-(i+1)次(=“当前数”右边所有数的总个数)
        for (j = i + 1; j < 5; j++) // 因为与“当前数”比较的第一个数值是 索引值为i的数组元素(“当前数”) 右边的第一个,所有j的初始值是i+1;因为循环5-(i+1)次,所以循环执行条件是: i<5;j++:每次循环一次后j加1
            // 第二层循环的循环体:若“当前数”>与其比较的数,就交换位置
            if (a[i] > a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = 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++)
        // 第二层循环(循环10-(i+1)次)
        for (j = i + 1; j < 10; j++)
            // 第二层循环的循环体
            if (a[i] > a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }

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

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

在这里插入图片描述

二、选择法 —— 降序 ⭐️

在这里插入图片描述

(一)、思路

从左到右,除最后一个数 依次作为 “当前数”其右边所有数 分别比较:

  • 若比右边数,则与该右边数交换位置;否则不交换位置(因为降序是由大到小排序滴)。

(二)、举例

需求:将 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;                     // i:第一层循环里-数组元素的索引值 j:第二层循环里-数组元素的索引值 t:交换数组元素位置的中间变量

    /** 使用选择法实现降序:从左到右,除最后一个数依次作为“当前数”与其右边所有数分别比较:若比右边数小,则与该右边数交换位置;否则不交换位置 */
    // 第一层循环:循环4(=数组a长度-1)次(因为最后一个数的右边没有值了,所以“当前数”为最后一个数时 不用再循环一次了。虽然这儿的4替换成>=4的任何数 对结果无影响(因为第二层循环做了限制),但为了避免不必要的循环,这里最好写4)
    for (i = 0; i < 4; i++) // 因为第一个数组元素的索引值为0,所以i的初始值为0;因为循环4次,所有循环执行条件是: i<4;i++:每次循环一次后i加1
        // 第二层循环:循环5-(i+1)次(=“当前数”右边所有数的总个数)
        for (j = i + 1; j < 5; j++) // 因为与“当前数”比较的第一个数值是 索引值为i的数组元素(“当前数”) 右边的第一个,所有j的初始值是i+1;因为循环5-(i+1)次,所以循环执行条件是: i<5;j++:每次循环一次后j加1
            // 第二层循环的循环体:若“当前数”<与其比较的数,就交换位置,从而实现降序
            if (a[i] < a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = 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/444663.html

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

相关文章

STM32F4_模数转换器(ADC)详解

目录 1. ADC是什么 2. ADC主要特性 3. ADC框图 3.1 ADC开关控制 3.2 ADC时钟 3.3 通道选择 3.4 单次转换模式和连续转换模式 3.5 时序图 3.6 模拟看门狗 4 温度传感器 5. ADC中断 6. ADC初始化结构体 6.1 ADC相关实验配置 7. 相关寄存器 7.1 ADC控制寄存器&…

Deep Neural Network for YouTube Recommendation论文精读

这篇论文 Deep Neural Networks for YouTube Recommendations 是google的YouTube团队在推荐系统上DNN方面的尝试&#xff0c;发表在16年9月的RecSys会议。本文所介绍的YouTube的推荐系统主要包括Deep Candidate Generation model和Deep Ranking model两个部分&#xff1a;Deep …

AWS EC2使用过程总结

步骤1&#xff1a;开通AWS账号 需要一个邮箱、一个信用卡账号&#xff1b;有第一年的免费试用&#xff0c;EC2每个月免费试用750小时&#xff1b;注册完成后&#xff0c;得到实例管理平台&#xff1a; 步骤2&#xff1a;开通EC2实例 步骤3&#xff1a;开通网关和安全组&…

【Python小技巧】一步到位升级到pandas 2.0.0正式版

文章目录 前言一、Pandas是什么&#xff1f;二、Pandas 2.0.0的升级特性三、升级安装Pandas 2.0.0正式版总结 前言 工欲善其事必先利其器&#xff0c;大数据、AI时代&#xff0c;目前Python 最新版本是3.11 &#xff0c;而Pandas也刚刚完成大升级&#xff0c;进入 2.0.0时代。…

ChatGPT 中的人类反馈强化学习 (RLHF) 实战

目录 1 前言2 人类反馈强化学习 (RLHF)2.1 奖励模型 (RM)2.2 近端策略优化算法 (PPO) 3 总结4 参考 团队博客: CSDN AI小组 相关阅读 ChatGPT 简介大语言模型浅探一关于 ChatGPT 必看的 10 篇论文从 ELMo 到 ChatGPT&#xff1a;历数 NLP 近 5 年必看大模型 1 前言 在当今数字…

整型、浮点型与字符串相互转换(C/C++)

文章目录 1. 整型、浮点型 -> 字符串2. 字符串 -> 整型3.字符串 -> 浮点型 1. 整型、浮点型 -> 字符串 A. 函数原型&#xff1a;   B. 分析  通常整型转换一般都是准确的&#xff0c;但是浮点型进行转换的时候因为精度问题有效数字位可能会出现一些偏差.   C. …

pushmall推贴共享电商2023年4月计划

Pushmall推贴共享电商2023年4月计划 2023年 二月份优化完成 1、商圈套餐卡&#xff1a;商品、优惠券、活动优化&#xff1b; 2、会员预充值一卡通&#xff1a;指定商家会员卡充值优惠&#xff1b; 3、商家海报&#xff1a;店铺海报、商品海报、商圈卡海报优化。 4、首页重新布…

SpringBoot(5)整合缓存

Springboot整合缓存 缓存SpringBoot内置缓存整合Ehcache缓存数据淘汰策略整合Memcached缓存SpringBoot整合jetcache缓存纯远程方案纯本地方案本地远程方案方法缓存远程方案的数据同步数据报表 SpringBoot整合j2cache缓存 缓存 企业级应用主要作用是信息处理&#xff0c;当需要…

【STM32】基础知识 第六课 内核 架构

【STM32】基础知识 第六课 内核 & 架构 F1 系统架构F4 系统架构F7 系统架构H7 系统架构 F1 系统架构 4 个主动单元 4 个被动单元 主动单元被动单元Cortex M3 内核 DCode 总线 (D-Bus)内部 FLASHCortex M3 内核系统总线 (S-Bus)内部 SRAM通用 DMA1FSMC通用 DMA2AHB 到 AP…

PCA主成分分析 从零理解

一、PCA的目的 假设我们有一堆观测到的数据。 数据的格式是observation*feature&#xff0c;每一行是一个观测&#xff08;也就是图里的一个点&#xff09;&#xff0c;每一列是这个数据的某个特征&#xff08;即一个维度&#xff09;。 假设数据矩阵是A&#xff0c;有m个观测…

辉煌优配|刚刚!“中字头”再度爆发

今天早盘&#xff0c;A股全体持续震动收拾&#xff0c;上证50指数跌破2700点整数关口&#xff0c;沪深300亦失守4100点。 盘面上&#xff0c;国防军工、种业、中字头、电气设备等板块涨幅居前&#xff0c;前期抢手的人工智能、半导体、信创、软件服务等板块全线回调。北上资金净…

零售店铺管理系统有哪些作用?选择零售管理系统要注意这4大问题

零售店铺管理系统主要是帮助实体零售店提高销售效率、降低成本、提升服务质量和客户满意度。 对于零售店铺来说&#xff0c;选择一款合适的零售店铺管理系统&#xff0c;可以有效提高其管理效率和精准度&#xff0c;同时也有利于自家店铺在市场竞争中占据优势。 一、零售店铺管…

Keil系列教程02_新建基础软件工程

1写在前面 目前Keil的四款产品&#xff08;软件&#xff09;&#xff1a;MDK-ARM、C51、C251、C166&#xff0c;在用法上极为相似&#xff0c;包括本文讲述的新建软件工程。 本文以目前&#xff08;2018年10月&#xff09;最新Keil MDK-ARM V5.26、STM32F103标准外设库为例&am…

晨控CK-FR208-PN与西门子PLC工业Profinet协议通讯指南

晨控CK-FR208-PN是一款支持标准工业Profinet协议的多通道工业RFID读写器&#xff0c;读卡器工作频率为13.56MHZ&#xff0c;支持对I-CODE 2、I-CODE SLI等符合ISO15693国际标准协议格式标签的读写。 读卡器同时支持标准工业通讯协议Profinet&#xff0c;方便用户通集成到PLC等…

电子模块|外控集成 LED 光源 WS2812模块---软件驱动stm32版

电子模块|外控集成 LED 光源 WS2812模块---软件驱动stm32版 模块简介单线归零码通讯方式24bit 数据结构 stm32 驱动 模块简介 WS2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同&#xff0c;每个元件即为一个像素点。像素点内部包含了智…

CxImage学习使用1:环境搭建

目录 前言 一、CxImage相关介绍 二、编译源码 三、将CxImage使用到自己的工程中 前言 CxImage是一个可以用于MFC 的C图像处理类库类&#xff0c;它可以打开&#xff0c;保存&#xff0c;显示&#xff0c;转换各种常见格式的图像文件&#xff0c;比如BMP, JPEG, GIF, PNG, TI…

“cnpm : 无法加载文件 C:\Users\xx\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本“ 解决办法

系统安全策略原因导致cnpm安装依赖包的时候提示以下错误&#xff0c;解决方案&#xff1a; 错误详情&#xff1a; cnpm : 无法加载文件 C:\Users\xx\AppData\Roaming\npm\cnpm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsof…

大家经常说的java八股文到底是什么?让我来总结一下吧!

八股文问题集合 面试必看java八股文 问题正在收录中&#xff0c;累了休息一会&#xff0c;如果有需要请&#xff0c;先关注&#xff0c;这几天会更帖子&#xff0c;答案后续补上 文章目录 八股文问题集合问题正在收录中&#xff0c;累了休息一会&#xff0c;如果有需要请&#…

AI大数据可视化EasyCVR视频融合平台的部署操作流程详解

EasyCVR视频融合平台基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持海量视频汇聚管理&#xff0c;能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频直播、云端录像、云存储、…

使用MyBatis实现CRUD操作

文章目录 简介&#xff08;一&#xff09;学习方向&#xff08;二&#xff09;学习事项 一&#xff0c;准备工作二&#xff0c;查询表记录&#xff08;一&#xff09;在映射器配置文件里引入结果映射元素&#xff08;二&#xff09;添加按姓名查询用户记录功能1&#xff0c;添加…