使用stl c ++对数字使用绝对值进行排序

sac*_*sac 2 c++ sorting stl absolute-value

我正在尝试使用 stl sort 函数根据绝对值对给定数组进行排序,但它没有按指定顺序排序:我编写的代码:

int fun(int i,int j)
{
    if(abs(i)<abs(j))
        return j;
    else
        return i;
}

int main()
{
    int arr[100000];
    int i,n;
    cin>>n;
    for(i=0;i<n;i++)
        cin>>arr[i];
    sort(arr,arr+n,fun);

    int diff=1000000ll;
    int x=0;
    int y,z;

    for i 0 to n
       cout<<arr[i];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ton*_*roy 5

最容易使用...

std::sort(arr, arr+n, [](int i, int j) { return abs(i) < abs(j); });
Run Code Online (Sandbox Code Playgroud)

...并fun完全放弃。

如果您真的想要一个可重用的函数(而不是上面的“lambda”),请查看这里cppreference 示例- 特别是customLess.

  • @Jagannath:幸运的是,大多数刚学习编程的人并没有因为构建和库可用性问题的一些公司纠缠而被锁定,因此他们可以免费下载最新的编译器版本并使用 C++11。 (5认同)