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日

相关文章

  • 云计算笔记(一):基础概念

    本文用于收集和整理云计算设计的概念。 现在的云计算有些过热(“人人都在谈论它,但没有人真正知道它”),很多研究都挂上了这个名词来显示其时髦。从某种意义上讲:云计算is nothing new,只是概念的创造。重新整理了网络资源,特别适合与运营商(包括亚马逊)来整理他们的产品和服务。云计算提供了很好的梳理,梳理了信息内容提供和信息获取途径 。而云这个概念sel…

    云计算 2023年4月12日
    00
  • 比特币挖矿软件有哪些?比特币挖矿步骤及教程

    比特币挖矿软件有哪些?比特币挖矿步骤及教程 1. 比特币挖矿简介 比特币挖矿是指通过计算机算力来验证比特币交易并获得比特币奖励的过程。比特币挖矿需要使用专门的软件和硬件设备,以确保计算机能够高效地进行挖矿操作。 2. 比特币挖矿软件 以下是几种常用的比特币挖矿软件: CGMiner:CGMiner是一种开源的比特币挖矿软件,支持多种硬件设备,包括ASIC、F…

    云计算 2023年5月16日
    00
  • 在Go中使用JSON(附demo)

    让我来为您讲解如何在Go中使用JSON。 前置知识 在了解如何在Go中使用JSON之前,我们需要先了解一些前置知识: JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web应用程序中,JSON通常用于从服务器传输数据到客户端。 在JSON中,数据以键值对的…

    云计算 2023年5月17日
    00
  • 说明及区分云计算的IaaS和PaaS以及SaaS三种服务方式

    云计算是一种基于互联网的计算方式,它提供了三种服务方式:IaaS、PaaS和SaaS。以下是一些攻略和示例,供您参考: 1. IaaS IaaS(基础设施即服务)是云计算的一种服务方式,它提供了基础设施的租用,包括计算、存储、网络等。IaaS服务提供商通常会提供虚拟机、存储空间、负载均衡、防火墙等基础设施服务,用户可以根据自己的需求选择相应的服务。 2. P…

    云计算 2023年5月16日
    00
  • ASP.NET Core WebApi中使用FluentValidation验证数据模型的方法

    下面我将为您详细讲解“ASP.NET Core WebApi中使用FluentValidation验证数据模型的方法”的完整攻略。 步骤一:安装FluentValidation库 在使用FluentValidation之前,需要通过Nuget包管理器安装FluentValidation库。可以使用下面的命令安装: Install-Package Fluent…

    云计算 2023年5月17日
    00
  • 说说这些年做的云计算和大数据项目

             入行十几年了,做了不少分布计算、并行计算、内存计算、海量数据处理的项目。依照如今的分类,这些都属于云计算/大数据范畴。今天说说我做过的当中三个项目。仅仅三个。         第一个是我们接到的视频分享站点的视频转码的订单。站点名字就不说了,有替人宣传嫌疑。他们情况是这样,视频站点的内容用MP4格式在网页上播放,可是上传的格式多种多样,我们…

    云计算 2023年4月11日
    00
  • 基于JavaScript操作DOM常用的API小结

    关于“基于JavaScript操作DOM常用的API小结”的攻略,我将详细讲解具体内容和应用,以下是完整的攻略过程。 1. DOM 是什么? 在我们谈论 DOM 的操作之前,先简介一下什么是DOM。DOM(Document Object Model),文档对象模型,它是HTML和XML文档的编程接口,它将文档内容映射为一个具有层次结构的对象,可以用JavaS…

    云计算 2023年5月17日
    00
  • 【云计算】docker相关开源项目、工具

    十大基于Docker的开发工具     作者                     郭蕾        发布于     2014年8月19日     |              注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情!                  1         讨论         分享到: 微博 微信…

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