C语言算法练习之求二维数组最值问题

C语言算法练习之求二维数组最值问题

问题描述

求一个二维数组中的最小值和最大值。

解决方法

方法一:暴力搜索

暴力搜索是一种比较简单的方法,它的思路是遍历整个二维数组,比较每个元素的大小,找到其中的最小值和最大值。

代码示例:

#include <stdio.h>

int main()
{
    int arr[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    int i, j, min = arr[0][0], max = arr[0][0];
    for(i = 0; i < 3; i++)
    {
        for(j = 0; j < 3; j++)
        {
            if(arr[i][j] < min)
                min = arr[i][j];
            if(arr[i][j] > max)
                max = arr[i][j];
        }
    }
    printf("min=%d,max=%d\n", min, max);
    return 0;
}

输出结果:

min=1,max=9

方法二:利用顺序存储结构

顺序存储结构是指将一个二维数组展开成一维数组进行存储,然后利用一维数组的技巧来解决问题。

展开二维数组时,需要将二维坐标 (i,j) 转换成一维下标 k,具体的公式为:

k = i * 列数 + j

例如,对于一个 3 行 4 列的二维数组,当 (i,j) = (2,2) 时,k = 2 * 4 + 2 = 10。

代码示例:

#include <stdio.h>

int main()
{
    int arr[3][3] = {
        {3, 4, 1},
        {6, 8, 2},
        {9, 5, 7}
    };
    int a[9], i, min = arr[0][0], max = arr[0][0];
    for(i = 0; i < 9; i++)
    {
        a[i] = arr[i / 3][i % 3];
        if(a[i] < min)
            min = a[i];
        if(a[i] > max)
            max = a[i];
    }
    printf("min=%d,max=%d\n", min, max);
    return 0;
}

输出结果:

min=1,max=9

总结

以上就是两种求解二维数组最值问题的方法,由于暴力搜索方法的时间复杂度较高,因此在实际应用中应该选择顺序存储结构进行实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言算法练习之求二维数组最值问题 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 云计算教程学习入门视频课件:什么是中间件?

    中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。     执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS…

    2023年4月13日
    00
  • python实现生成Word、docx文件的方法分析

    下面是“Python实现生成Word、docx文件的方法分析”的完整攻略。 1. 背景介绍 在日常工作中,我们经常需要生成一些文档,如报告、合同、简历等。使用Word、docx等格式的文档是比较常见的。Python语言可以通过一些库来快速生成这些文档,本文就围绕这个主题来进行讲解。 2. 相关库介绍 目前,针对生成Word、docx文件的Python库比较多…

    云计算 2023年5月18日
    00
  • 前端面试知识点目录一览

    前端面试知识点目录一览 前端面试知识点目录一览是一个包含了前端开发中常见的知识点的列表,涵盖了 HTML、CSS、JavaScript、框架、工具等方面的内容。本文将提供一个完整的攻略,包括如何使用该列表、如何准备面试、如何使用示例代码等内容。 使用前端面试知识点目录一览 前端面试知识点目录一览是一个非常有用的工具,可以帮助我们了解前端开发中常见的知识点,为…

    云计算 2023年5月16日
    00
  • Asp.net core利用MediatR进程内发布/订阅详解

    Asp.net core利用MediatR进程内发布/订阅详解 在本攻略中,我们将详细讲解Asp.net core利用MediatR进程内发布/订阅的实现方法,包括MediatR的基本概念、使用方法和示例说明。 MediatR基本概念 MediatR是一个轻量级的中介者库,用于在应用程序中实现发布/订阅模式。它可以帮助我们更好地组织和管理应用程序中的业务逻辑…

    云计算 2023年5月16日
    00
  • 《云计算核心技术剖析》读书笔记之一

    http://book.douban.com/subject/6382788/ 通过2周的时间,阅读完了由吴朱华编著的《云计算核心技术剖析》一书。同时国内由CSDN协办的第四届云计算大会要开幕,我在这里把自己写下这本书的读书笔记。这本书是2011年出版,但是在这本书上对微软的Windows Azure云平台都没有单独放出来编写,这应该算是其中最大的不足。同时…

    云计算 2023年4月11日
    00
  • Python Sweetviz轻松实现探索性数据分析

    Sure! Python Sweetviz轻松实现探索性数据分析 Sweetviz是一个Python的库,用于快速生成针对数据的HTML数据报告,方便进行数据探索性分析。在数据科学中,探索性数据分析(EDA)是数据预处理的一个关键步骤,它可以帮助你更好地了解数据集并发现异常值、缺失值、离群值等问题。本文将介绍如何使用Sweetviz库进行探索性数据分析,包括…

    云计算 2023年5月18日
    00
  • ASP.NET 上传文件导入Excel的示例

    ASP.NET 上传文件导入Excel的示例 在 ASP.NET 中,我们可以使用 C# 代码实现上传文件并导入 Excel 的功能。本文将提供一个完整的攻略,包括如何创建 ASP.NET 项目、如何上传文件、如何导入 Excel、如何使用示例代码等内容。 创建 ASP.NET 项目 在开始实现上传文件导入 Excel 的功能之前,我们需要先创建一个 ASP…

    云计算 2023年5月16日
    00
  • Inclavare Containers:云原生机密计算的未来

    ​简介:本文为你详细的梳理一次 Inclavare Containers 项目的发展脉络,解读它的核心思想和创新技术。 ​ 作为业界首个面向机密计算场景的开源容器运行时,Inclavare Containers 项目于 2020 年 5 月开源,短短一年多时间内发展势头非常迅猛,吸引了众多领域专家和工程师的关注与贡献。2021 年 9 月 15 日,云原生计…

    云计算 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部