查找数组中的最小值

Posted

技术标签:

【中文标题】查找数组中的最小值【英文标题】:Finding smallest value in an array 【发布时间】:2016-10-28 09:33:47 【问题描述】:

我正在尝试编写一个函数来,但我无法弄清楚我所犯的错误。有人可以看看吗?谢谢!!!

void smallest(int array[],int size)
    
        int smallest=array[0];
            for (int i=1;i<size-1;i++)
                
                if (array[i]<smallest)

                 smallest=array[i];

                
        cout<<smallest<<'\n';

     

代码没有执行,因为有断点,我看不出问题出在哪里。

【问题讨论】:

使用调试器定位代码中的“断点”。检查所有涉及的变量的值,并确保它们是有效的。 尝试创建一个Minimal, Complete, and Verifiable Example 并向我们展示,向我们展示您如何使用和调用此函数以及使用什么值。 &lt; size-1 当然应该是&lt; size 你有堆栈跟踪 另外,如果数组大小为零,你的程序会崩溃 @SvenNilsson 我只知道 nullptr 但我没有听说过零大小的数组,这是新功能吗? 【参考方案1】:

您可以在此处找到更有效的解决方案:Finding smallest value in an array most efficiently。

代码sn-p:

int smallest = array[0];
for (int i = 0; i < array_length; i++) 
    if (array[i] < smallest) 
        smallest = array[i];
    

【讨论】:

与提出的问题没有什么不同【参考方案2】:

您的循环不会到达数组的最后一个元素。您应该删除条件的负 1。并毫不犹豫地测试接收到的参数的值:

void smallest(int array[], int size)

    if (size <= 0 || !array)
        return;
    int smallest = array[0];
    for (int i = 1; i < size ; i++)
        if (array[i] < smallest)
            smallest = array[i];
    cout << smallest << '\n';

【讨论】:

以上是关于查找数组中的最小值的主要内容,如果未能解决你的问题,请参考以下文章

查找数组中的绝对最小值

在javascript中的数组中查找多个最小值的索引

C语言丨如何查找数组(序列)中的最大值或者最小值?

查找数组中的最大值(最小值)及相对应的下标

在数组中查找最小值 > 0

在数组中查找最小值 > 0