如何生成随机数组并获得它的第三个最大值

How to generate randomize array and getting the third max of it

提问人:Jude Koh 提问时间:3/13/2023 更新时间:3/13/2023 访问量:36

问:

这里的问题是获得第三大随机数。

我的代码应该是生成随机的 100 个数字,通过排序算法,我会得到第三大数字。

#include <iostream>
#include <climits>
#include <stdlib.h>
using namespace std;

void thirdmax(int arr[], int arr_size)
{
    if (arr_size < 3) {
        printf(" Invalid Input ");
        return;
    }

    // Find first max element
    int first = arr[0];
    for (int i = 1; i < arr_size; i++)
        if (arr[i] > first)
            first = arr[i];

    // Find second max element
    int second = int_min;
    for (int i = 0; i < arr_size; i++)
        if (arr[i] > second && arr[i] < first)
            second = arr[i];

    // Find third max element
    int third = int_min;
    for (int i = 0; i < arr_size; i++)
        if (arr[i] > third && arr[i] < second)
            third = arr[i];

    std::cout<<"The Third Max Element is:"<<third;
}

int main()
{
    int i;
    int arr_size;
     cout<<" Random Numbers : ";
    
    for(i=1;i<=100;i++)
    {
        arr_size=rand()%100; 
        cout<<" "<<arr_size<<" ";
    }
    cout<<"\n";
 
    int n = sizeof(int arr_size) / sizeof(int arr_size[0]);
    thirdmax(int rr_size, n);

    return 0;
}

我的代码应该是生成随机的 100 个数字,通过排序算法,我会得到第三大数字。

C++ IOstream SRand

评论

0赞 Botje 3/13/2023
您的代码充满了基本的语法错误。假设这些是固定的,您会看到哪些行为是意料之外的?
0赞 Botje 3/13/2023
作为另一种方法:为什么不在遍历阵列时跟踪三个最大的元素,而不是遍历阵列三次?
0赞 MikeCAT 3/13/2023
中的第三大数是多少?(应该计算所有重复的元素,还是只计算其中一个元素?{100, 100, 90, 80}
0赞 Jude Koh 3/13/2023
不应包括都柏林数字,因此 80 是第三大数字。对不起,只是一个初学者
0赞 Jesper Juhl 3/13/2023
请参阅 en.cppreference.com/w/cpp/numeric/random,了解生成和使用随机数的更好方法,而不是旧的和蹩脚的 C 函数(顺便说一句,你甚至不会用它播种)。rand()srand()

答: 暂无答案