Linux第一课:c语言 学习记录day06

news2025/2/28 15:40:33

四、数组

冒泡排序

两两比较,第 j 个和 j+1 个比较

int a[5] = {5, 4, 3, 2, 1};

第一轮:i = 0   n:n个数,比较 n-1-i 次

4 5 3 2 1 // 第一次比较 j = 0

4 3 5 2 1 // 第二次比较 j = 1

4 3 2 5 1 // 第三次比较 j = 2

4 3 2 1 5 // 第四次比较 j = 3

第二轮:i = 1   n-1-i 次

3 4 2 1 5 // 第一次比较 j = 0

3 2 4 1 5 // 第二次比较 j = 1

3 2 1 4 5 // 第三次比较 j = 2

第三轮:i = 2   n-1-i 次

2 3 1 4 5 // 第一次比较 j = 0

2 1 3 4 5 // 第二次比较 j = 1

第四轮:i = 3   n-1-i 次

1 2 3 4 5 // 第一次比较 j = 0

#include <stdio.h>
#define N 5

int main ()
{
    int temp, i, j;
    int arr[N] = {5, 4, 3, 2, 1};
    for (i = 0; i < N-1; i++)
    {
        for (j = 0 ; j < N-1-i; j++)
        {
            if (arr[j] > arr[j+1])
            {
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    for (i = 0; i < 5; i++)
    {
        printf("%-4d", arr[i]);
    }
    printf ("\n");
    return 0;
}

选择排序

n 个数:先找出最小的值下标暂存,选择出最小的值与 arr [i] 交换

排序过程:

1、首先通过n-1次比较,从n个数中找出最小值的下标,将它与第一个数交换,第一轮选择排序,结果最小值,被放在第一个元素的位置上

2、通过n-2次比较,从剩余的n-1个数中找到最小值的下标做记录,将它与第二个元素交换

3、重复这个过程,共经过n-1论排序后,排序结束

#include <stdio.h>
#define N 5

int main ()
{
    int i, k, j, t, b;
    int a[N] = {1, 2, 3, 4, 5};

    for (i = 0; i < N-1; i++)
    {
        k = i;
        for (j = i+1; j < N; j++)
        {
            if ( a[k] < a[j])
            {
                k = j;
            }
        }
        if ( i != k)
        {
            t = a[i];
            a[i] = a[k];
            a[k] = t;
        }
    }
    for (i = 0; i < N; i++)
    {
        printf("%-4d", a[i]);
    }
    printf ("\n");
    return 0;
}

4、二维数组

1、格式

        存储类型  数据类型  数组名[行数][列数];

        int a[2][3];

2、访问元素

        数组名[行下标][列下标];(下标从0开始)

        a[0][0]:第一行第一列的元素

        a[1][2]:第二行第三列的元素

注意:行下标和列下标都不能越界

        行数可以省略,列数不能省略

        int a[][3] = {1, 2, 3, 4,  5, 6};

3、二维数组的元素个数

        1)行数 * 列数

        2)sizeof(数组名)/sizeof(数据类型)

4、二维数组的大小

        sizeof(数组名)

        数据类型的大小 * 行数 * 列数

5、数组名

        a:第一行首地址

        a+1:第二行首地址

        a+n:第 n+1 行首地址

6、初始化

1)全部初始化

        int a[2][3] = {1, 2, 3, 4, 5, 6};        // 顺序赋值

        int a[2][3] = {

                {1, 2, 3},

                {4, 5, 6}

        };        // 按行赋值

2)部分初始化

        未被初始化的元素值为0

        int a[2][3] = {1, 2, 3, 4};        // 顺序赋值

        int a[2][3] = {{1, 2}, {4, 5}}        // 按行赋值

3)未初始化

        随机值,需要单独赋值

        int a[2][3];

7、内存分配

        a是行地址,a[0]是列地址

a:第一行首地址

a+1:第二行首地址

a[0]:第一行第一列的地址

a[0]+1:第一行第二列的地址

a[1]:第二行第一列的地址

a[1]+1:第二行第二列的地址

8、二维数组遍历

        for循环嵌套,外层行数,内层列数

int a[m][n] = {};

for(int i = 0; i < m; i++)
{
    for(int j = 0; j < n; j++)
    {
        scanf();
        printf();
    }
}

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

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

相关文章

Cline(原Claude Dev)开源的IDE AI插件,如何搭配OpenRouter实现cursor功能,Cline怎么使用

Cline&#xff08;原Claude Dev&#xff09;是一个开源的IDE AI插件&#xff0c;可以使用你的命令行界面和编辑器的人工智能助手。 你可以直接在VS Code编辑器进行安装。如果你使用过Cursor AI IDE的话&#xff0c;可以尝试最新发布的Cline3.1版本。 在OpenRouter上&#xff0…

arcgis的合并、相交、融合、裁剪、联合、标识操作的区别和使用

1、相交 需要输入两个面要素&#xff0c;最终得到的是两个输入面要素相交部分的结果面要素。 2、合并 合并能将两个单独存放的两个要素类的内容&#xff0c;汇集到一个要素类里面。 3、融合 融合能将一个要素类内的所有元素融合成一个整体。 4、裁剪 裁剪需要输入两个面要…

【Rust自学】11.7. 按测试的名称运行测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.7.1. 按名称运行测试的子集 如果想要选择运行的测试&#xff0c;就将测试的名称&#xff08;一个或多个&#xff09;作为cargo test的…

利用Java爬虫获取义乌购店铺所有商品列表:技术探索与实践

在当今数字化时代&#xff0c;数据的重要性不言而喻。对于采购商和市场分析师而言&#xff0c;能够快速获取并分析供应商店铺内的所有商品信息&#xff0c;是制定有效采购策略和市场分析的关键。义乌购作为国内知名的在线批发平台&#xff0c;拥有海量的商品数据。本文将介绍如…

An FPGA-based SoC System——RISC-V On PYNQ项目复现

本文参考&#xff1a; &#x1f449; 1️⃣ 原始工程 &#x1f449; 2️⃣ 原始工程复现教程 &#x1f449; 3️⃣ RISCV工具链安装教程 1.准备工作 &#x1f447;下面以LOCATION代表本地源存储库的安装目录&#xff0c;以home/xilinx代表在PYNQ-Z2开发板上的目录 ❗ 下载Vivad…

Photoshop PS批处理操作教程(批量修改图片尺寸、参数等)

前言 ‌Photoshop批处理的主要作用‌是通过自动化处理一系列相似的操作来同时应用于多张图片&#xff0c;从而节省时间和精力&#xff0c;提高工作效率。批处理功能特别适用于需要批量处理的任务&#xff0c;如图像尺寸调整、颜色校正、水印添加等‌。 操作步骤 1.创建动作 …

互联网架构变迁:从 TCP/IP “呼叫” 到 NDN “内容分发” 的逐浪之旅

本文将给出关于互联网架构演进的一个不同视角。回顾一下互联网的核心理论基础产生的背景&#xff1a; 左边是典型的集中控制通信网络&#xff0c;很容易被摧毁&#xff0c;而右边的网络则没有单点问题&#xff0c;换句话说它很难被全部摧毁&#xff0c;与此同时&#xff0c;分…

nvim 打造成可用的IDE(2)

上一个 文章写的太长了&#xff0c; 后来再写东西 就一卡一卡的&#xff0c;所以新开一个。 主要是关于 bufferline的。 之前我的界面是这样的。 这个图标很不舒服有。 后来发现是在这里进行配置。 我也不知道&#xff0c;这个配置 我是从哪 抄过来的。 测试结果&#xff1…

drawDB docker部属

docker pull xinsodev/drawdb docker run --name some-drawdb -p 3000:80 -d xinsodev/drawdb浏览器访问&#xff1a;http://192.168.31.135:3000/

Redis--20--大Key问题解析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 大Key问题1.什么是 Redis 大 Key&#xff1f;在 Redis 中&#xff0c;大 Key 是指单个键值对的数据量非常大&#xff0c;可能包含大量数据。 2. Redis大Key的危害3.…

自动驾驶---E2E架构演进

1 背景 模型最早应用的自动驾驶模块就是感知层面&#xff0c;随着技术的发展&#xff0c;逐渐开始应用到决策规划等其它模块。端到端自动驾驶架构是一种基于深层神经网络模型和方法的自动驾驶技术模式。目前一段式端到端系统只有在英伟达早期所做的demo中实现&#xff0c;再者就…

如何优雅地绘制时序图

说到时序图&#xff0c;相信所有从事嵌入式开发的伙伴都非常熟悉&#xff0c;在各种元器件手册以及处理器说明书中&#xff0c;但凡涉及到通信、接口、交互等内容&#xff0c;都会涉及到时序图。时序图可以非常详细且明确地描述硬件及软件接口中各个信号的时序关系&#xff0c;…

SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门

本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现&#xff0c;并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架&#xff0c;帮助你快速开发可扩展、高效的分布式系统。 目录 前言 服务注册和发现 服务注册 ​编辑 …

WebGIS在应急灾害中对村庄、风景区、机场的影响范围应用-以日喀则市定日县地震为例

目录 前言 一、关于影响范围 1、震中距离5公里 2、震中20公里范围 3、20到80公里范围 二、空间查询知识 1、相关数据介绍 2、空间数据查询 三、前后端数据查询以及web可视化实现 1、后台API实现 2、WebGIS前端实现 四、Web成果展示 1、空间位置分析 2、包含风景区…

使用网页版Jupyter Notebook和VScode打开.ipynb文件

目录 正文 1、网页版Jupyter Notebook查看 2、VScode查看 因为总是忘记查看文件的网址&#xff0c;收藏了但分类众多每次都找不到……当个记录吧&#xff08;/捂脸哭&#xff09;&#xff01; 正文 此处以gitub中的某个仓库为例&#xff1a; https://github.com/INM-6/mu…

景联文科技提供高质量多模态数据处理服务,驱动AI新时代

在当今快速发展的AI时代&#xff0c;多模态数据标注成为推动人工智能技术进步的关键环节。景联文科技作为行业领先的AI数据服务提供商&#xff0c;专注于为客户提供高质量、高精度的多模态数据标注服务&#xff0c;涵盖图像、语音、文本、视频及3D点云等多种类型的数据。通过专…

Python在Excel工作表中创建数据透视表

在数据处理和分析工作中&#xff0c;Excel作为一个广泛使用的工具&#xff0c;提供了强大的功能来管理和解析数据。当面对大量复杂的数据集时&#xff0c;为了更高效地总结、分析和展示数据&#xff0c;创建数据透视表成为一种不可或缺的方法。通过使用Python这样的编程语言与E…

django基于Python的电影推荐系统

Django 基于 Python 的电影推荐系统 一、系统概述 Django 基于 Python 的电影推荐系统是一款利用 Django 框架开发的智能化应用程序&#xff0c;旨在为电影爱好者提供个性化的电影推荐服务。该系统通过收集和分析用户的观影历史、评分数据、电影的属性信息&#xff08;如类型…

GPT-SoVITS学习01

1.什么是TTS TTS&#xff08;Text-To-Speech&#xff09;这是一种文字转语音的语音合成。类似的还有SVC&#xff08;歌声转换&#xff09;、SVS&#xff08;歌声合成&#xff09;等。 2.配置要求 GPT-SoVITS对电脑配置有较高的要求。 训练&#xff1a;对于Windows电脑&#…

计算机网络 (36)TCP可靠传输的实现

前言 TCP&#xff08;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP通过多种机制实现可靠传输&#xff0c;这些机制主要包括连接管理、序列号和确认应答机制、重传机制、流量控制、拥塞控制等。 一、连接管理 TCP使用三次握手&#xff0…