C 两个元素之间的最大差值

C 两个元素之间的最大差值,c,arrays,algorithm,C,Arrays,Algorithm,给定一个整数数组,我必须找出任意两个元素之间的最大差值,这样数组中较小的数字后面会出现较大的数字。我使用了一种简单的方法,通过跟踪两个东西,将差值与迄今为止遇到的最小数进行比较 1.最大差值 2.迄今为止访问的最小数量 int min_element=arr[0]; int diff=arr[1]-arr[0]; for(i=1;i<n;i++) { if(arr[i]-min_element>diff) dif

给定一个整数数组,我必须找出任意两个元素之间的最大差值,这样数组中较小的数字后面会出现较大的数字。我使用了一种简单的方法,通过跟踪两个东西,将差值与迄今为止遇到的最小数进行比较

1.最大差值

2.迄今为止访问的最小数量

    int min_element=arr[0];
    int diff=arr[1]-arr[0];
    for(i=1;i<n;i++)
    {
        if(arr[i]-min_element>diff)
            diff=arr[i]-min_element;
        if(arr[i]<min_element)
            min_element=arr[i];
    }
    return diff;
int min_元素=arr[0];
int diff=arr[1]-arr[0];
对于(i=1;idiff)
diff=arr[i]-最小元素;

如果(arr[i],那么您的算法是最优的,直到一个常数因子


读取
n
整数数组需要
Ω(n)
。您的算法是
O(n),所以你很好。

因为你有工作代码,只是在寻找FiffCub,你可能会想考虑这个问题。你有什么好的。你可以使用各种技巧来加速它,但只有一个常量因子(它需要你的实现所需的Ω(n)时间)。。除非这是您的程序的一个重要性能瓶颈,否则请确保您的编译器已启用优化,并转到下一个问题。吹毛求疵:您不会检查
arr[1]
是否大于
arr[0]
。只要数据未按相反顺序排序(递减)顺序,它应该自行排序,但您需要考虑边界条件(如果只有两个元素,并且它们不是按递增顺序排列会怎么样?)。