c - 如何在非常大的数组中找到最小值,并在 c 中的数组中找到大值

标签 c

我试图找到一个数组的最小值然后检查最小值频率,但问题是如果数组的大小和它存储的值很大,我的代码就不起作用。

1 < A[i] < 10^9

1 < N < 10^5 1< T < 10

这里A是数组,N是数组的大小,T是测试用例的数量

c程序

#include<stdio.h>
#include<stdlib.h>

寻找最小值

int findMin(int A[], int N)
{
    int min;
    int i;
    if(N>2)
    {
        for(i=0;i<N;i++)
        {
            if( A[i]<=A[i+1])
            {
                min = A[i];
                int temp = A[i];
                A[i]=A[i+1];
                A[i+1] = temp;
            }
        }
    }
    else
    {
        min = A[0];
    }

    return freq(min,A,N);

}

数组中最小值出现的频率

int freq(int min, int A[], int N)
{
    int i,count=0;
    for(i=0;i<N;i++)
    {
        if(min == A[i])
        {
            count++;
        }
    }

    return count%2;
}

主要()

int main()
{

    int *A,N;
    int i,T;
    scanf("%d",&T);
    while(T>0)
    {
        scanf("%d",&N);
        A = (int *)calloc(N,sizeof(int));
        for(i=0;i<N;i++)
        {
            scanf("%d",&A[i]);
        }
        if(findMin(A,N) == 1)
        {
            printf("Lucky\n");
        }
        else
        {
            printf("Unlucky\n");
        }

        T--;
   }
    return 0;
}

[编辑] 编码目标
count%2 用于检查频率是奇数还是偶数

最佳答案

如果您对查找数组中的最小值感兴趣,并且对“频率”感兴趣,您将其定义为最小值的计数是奇数还是偶数,也许这就是您需要的?

int findMinAndFreq(int A[], int N){
   if(N == 0){
      printf("Array is empty");
      return 0;
   }
   if(N == 1){
      return 1;
   }

   int min = A[0];
   int count = 1;
   for(int i = 1; i<N; i++){
      if(A[i] == min){
         count++;
      }
      if(A[i] < min){
         min = A[i];
         count = 1;
      }
   }
   return count%2;
}

关于c - 如何在非常大的数组中找到最小值,并在 c 中的数组中找到大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45639759/

相关文章:

c - 让语言环境函数在 glibc 中工作

有人可以解释为什么要在这里计算这个模数吗?

c++ - 无法在 Intel Xeon Phi 上执行二进制错误

c - C 中文件读取的奇怪行为

C:在C中执行和输出shell命令

c++ - 类似Python的 "if x in y"for C/C++的操作?

c - 结构本身正在改变值(value)?

c - 使用#define 创建与 C89 std 兼容的虚拟记录

c - 字节到 C 中的 signed int

c - 使用 dlopen() 加载共享库 (.so) 与将共享库包含在可执行文件中有何区别?