最有效地查找数组中的最小值

新手上路,请多包涵

数组中有N个值,其中一个是最小值。如何最有效地找到最小值?

原文由 Muhammad Akhtar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 788
2 个回答

如果它们是未排序的,你不能做很多事情,只能查看每一个,这是 O(N),当你完成后你会知道最小值。


伪代码:

 small = <biggest value> // such as std::numerical_limits<int>::max
for each element in array:
    if (element < small)
        small = element

Ben 提醒我的一个更好的方法是使用第一个元素初始化 small:

 small = element[0]
for each element in array, starting from 1 (not 0):
    if (element < small)
        small = element

以上内容作为 std::min_element 包装在 算法 头中。


如果您可以在添加项目时保持数组排序,那么找到它将是 O(1),因为您可以将最小的放在前面。

这和数组一样好。

原文由 GManNickG 发布,翻译遵循 CC BY-SA 3.0 许可协议

C++ 代码

#include <iostream>
using namespace std;
int main() {
    int n = 5;
    int arr[n] = {12,4,15,6,2};
    int min = arr[0];
    for (int i=1;i<n;i++){
        if (min>arr[i]){
            min = arr[i];
        }
    }
    cout << min;
    return 0;
}

原文由 Harshit Dalal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题