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

yizhihongxing

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日

相关文章

  • 云计算学习导学

    待到秋来九月八,我花开后百花杀 云计算的市场发展和未来前景 云计算学习指南 课程目标 适合对象 课程目录 后续学习 云计算的市场发展和未来前景 云计算近些年来,无论是公有云还是私有云都有非常高的增长趋势,并且云计算的市场规模还是很庞大的。 从厂商和国家方面来说,有许多公司和国家都在支持这一行业,特别是国家出台了许多政策支持云计算行业,特别是金融业特别需要这方…

    2023年4月13日
    00
  • vue+高德地图写地图选址组件的方法

    Vue+高德地图写地图选址组件的方法 在Vue中,我们可以使用高德地图API来实现地图选址组件。以下是一个完整攻略,包括如何引入高德地图API、如何创建地图选址组件以及如何使用该组件,并提供两个示例说明。 步骤1:引入高德地图API 在Vue中,我们可以使用以下步骤引入高德地图API: 在index.html文件中,添加以下代码: <script sr…

    云计算 2023年5月16日
    00
  • ASP.NET Core命令行界面CLI用法

    下面是关于“ASP.NET Core命令行界面CLI用法”的完整攻略,包含两个示例说明。 简介 ASP.NET Core命令行界面(CLI)是一个命令行工具,用于创建、构建和部署ASP.NET Core应用程序。本攻略中,我们将介绍如何使用ASP.NET Core CLI,并提供一些最佳实践。 步骤 在使用ASP.NET Core CLI时,我们可以通过以下…

    云计算 2023年5月16日
    00
  • 云计算课程-网络原理与应用-20171113

    一 计算机网络组成:   1. 通信子网:     传输介质:网线,光纤和无线。     网络设备:交换机,路由器和防火墙。   2.资源子网:     服务器:IBM,DELL,HP,联想,浪潮,华为     操作系统:Windows,linux和Unix.   二,OSI(open system interconnection)开放系统互联参考模型   …

    云计算 2023年4月10日
    00
  • 云技术入门指导:什么是云计算技术,云技术用什么语言开发 – 咖啡猫1292

    云技术入门指导:什么是云计算技术,云技术用什么语言开发 云计算技术:这里只是列出我所知道的,希望大家对云计算技术有所了解:一首先让大家明白什么是云端,所谓云端需要两层理解(1)服务不在本地,这一层可以理解为服务器(2)它和普通的服务器是不一样的,这些云端的服务器的资源是共享的,一旦一个服务器不能承受,将会把任务分配给其他机器。二、云技术与其他技术的区别:云技…

    云计算 2023年4月13日
    00
  • Android提高之蓝牙隐藏API探秘

    下面是关于“Android提高之蓝牙隐藏API探秘”的完整攻略,包含两个示例说明。 简介 在Android系统中,有一些隐藏的API可以用于蓝牙开发。这些API可以帮助我们更好地实现蓝牙功能,并提高开发效率。在本攻略中,我们将介绍如何探秘Android蓝牙隐藏API,并使用这些API来实现蓝牙功能。 步骤 在Android系统中探秘蓝牙隐藏API时,我们可以…

    云计算 2023年5月16日
    00
  • VS2019 自定义项目模板的实现方法

    下面是关于“VS2019 自定义项目模板的实现方法”的完整攻略,包含两个示例说明。 简介 在Visual Studio 2019中,我们可以使用自定义项目模板来快速创建项目。在本攻略中,我们将介绍如何创建自定义项目模板,并提供一些示例说明。 步骤 在Visual Studio 2019中创建自定义项目模板时,我们可以通过以下步骤来实现: 创建项目模板。 编辑…

    云计算 2023年5月16日
    00
  • 云环境下集合隐私计算-解读

    读paper-“云环境下集合隐私计算”的笔记 基础 哥德尔编码 可以将非负整数序列(向量)与自然数建立起对应关系 具体来说,就是无穷序列\((a_1,x_2,…,x_m)\)借助素数序列\((p_1,p_2,…,p_m)\),建立对应关系: \([a_1,x_2,…,x_m]\)称作有穷序列\((a_1,x_2,…,x_m)\)的哥德尔数。 …

    2023年4月9日
    00
合作推广
合作推广
分享本页
返回顶部