找到数字之间的最大差异

时间:2015-12-11 21:52:55

标签: c++ sorting difference

给定n个数字,找出其中两个数字之间的最大差异。例如,对于输入数据1 2 7 -6,我们有13 = 7 - ( - 6)。但我的代码似乎没有输出正确的结果:

#include <iostream>
#include <algorithm>
int main()
{
    int n, j, k;
    std::cin >> n;
    int *a;
    a = new int[n];

    for (j=0; j<n; j++)
    {
        std::cin >> a[j];
    }

   std::sort(a, a + sizeof(int));


    k=a[n-1]-a[0];
    std::cout << k;

    delete [] a;

    return 0;
}

2 个答案:

答案 0 :(得分:1)

正如Olivier回答的那样,你的错误在于调用std :: sort(),但我想指出,除非这对你的任务是强制性的(它可能是作业的一部分),你不需要对数组进行排序,也不需要数组。

#include <iostream>
#include <climits>

int main() {
    int n, j, a;
    int max = INT_MIN;
    int min = INT_MAX;

    if ( std::cin >> n  &&  n > 0 ) {
        while ( j < n  &&  std::cin >> a ) {
            if ( a < min ) min = a;
            if ( a > max ) max = a;
            j++;
        }    
        std::cout << max - min;
    }
    return 0;
}

答案 1 :(得分:0)

您的问题是当您调用std :: sort

你这样做:

std::sort(a, a + sizeof(int));

所以你实际上只排序了4个元素(sizeof(int)= 4)。为了得到正确的结果,你可以这样做:

std::sort(a, a+n); (better)

std::sort(a, &a[n]);