C语言练习04(查找数组最大值和最小值)

要实现数组元素大小比较(例如查找最大值或最小值),其最小时间复杂度为 O (n)(线性时间复杂度),因为必须遍历所有元素至少一次才能确定最值。以下是 C 语言实现查找数组最大值和最小值的示例代码:

#include <stdio.h>
#include <limits.h>  // 用于获取INT_MIN和INT_MAX(可选)

// 函数声明:查找数组的最大值和最小值(通过指针返回)
void findMinMax(int arr[], int size, int* min, int* max) {
    if (size == 0) {
        printf("错误:数组为空!\n");
        return;
    }
    
    // 初始化min和max为数组第一个元素
    *min = arr[0];
    *max = arr[0];
    
    // 遍历数组,更新min和max
    for (int i = 1; i < size; i++) {
        if (arr[i] < *min) {
            *min = arr[i];  // 找到更小值
        }
        if (arr[i] > *max) {
            *max = arr[i];  // 找到更大值
        }
    }
}

int main() {
    int arr[] = {3, 7, 1, 9, 4, 2, 8, 5};
    int size = sizeof(arr) / sizeof(arr[0]);  // 自动计算数组长度
    int min_val, max_val;
    
    // 调用函数查找最值
    findMinMax(arr, size, &min_val, &max_val);
    
    // 输出结果
    printf("数组元素:");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n最小值:%d\n最大值:%d\n", min_val, max_val);
    
    return 0;
}

代码说明

  1. 时间复杂度:代码通过 1 次遍历(循环执行 n-1 次)同时找到最大值和最小值,时间复杂度为 O (n),这是理论上的最小值(因为必须检查所有元素才能确定最值)。
  2. 函数设计findMinMax函数通过指针直接修改主函数中的min_valmax_val,避免了返回多个值的复杂操作。
  3. 鲁棒性:代码检查了数组是否为空(size == 0),避免了非法内存访问。
  4. 数组长度计算:主函数中通过sizeof(arr) / sizeof(arr[0])自动计算数组长度,避免硬编码。

扩展说明

  • 若只需找最大值或最小值,可简化函数(例如删除其中一个条件判断),时间复杂度仍为 O (n)。
  • 对于浮点数数组(如double类型),只需修改函数参数类型(将int arr[]改为double arr[],并调整minmax的类型),逻辑完全一致。

本网站原创文章版权归何大锤的狂飙日记所有。发布者:何大锤,转转请注明出处:何大锤的博客

(0)
何大锤的头像何大锤管理团队

相关推荐

  • 第二章数据结构线性表 – 带头结点的单链表

    一、单链表的定义和表示 – 带头结点的单链表 1、定义 单链表是由表头唯一确定,因此单链表可以用头指针的名字来命名 若头指针名是L,则把链表称为表L 2、单链表的存储结构 二、单链表基本操作的算法实现 – 带头结点的单链表 2.1 单链表的初始化 2.2 判断一个链表是否为空 一、带头结点的单链表代码实现 共6种函数代码 三、头插法创…

    3小时前
    200
  • 第二章数据结构线性表 – 单链表定义

    一、引言 1.1 知识框架 1.2 有了数组为什么还要链表? 在前面我们介绍过数组,数组中元素是存储在连续的内存位置在声明数组时,我们可以指定数组的大小,但这将限制数组可以存储的元素数量 例如我们声明的是 int arr[10],那么arr数组最多可以存储10个数据元素 但是我们事先不知道元素的大小呢? 我们该如何去做? 当然首先想到的是申请一个足够大的数组…

    6小时前
    200
  • 04 程序流程结构

    C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构 循环结构:依据条件是否满足,循环多次执行某段代码 顺序结构:程序按顺序执行,不发生跳转 选择结构:依据条件是否满足,有选择的执行相应功能 4.1 选择结构 4.1.1 if语句 作用:执行满足条件的语句 if语句的三种形式 示例: 注意:if条件表达式后不要加分号 示例: 示例: 嵌套if…

    3天前
    300
  • 初始C语言01

    0、什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MC…

    4天前
    000
  • 01 你好Python

    一、课件

    4天前
    000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

2211932694

在线咨询: QQ交谈

邮件:hdcblog1999@163.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
网站建设中ing......