使用 STL C++ 对数字 USIG 绝对值进行排序
to sort the numbers usig absoluter value using stl c++
我正在尝试使用 stl 排序函数根据绝对值对给定数组进行排序,但它没有按指定顺序排序:我写的代码:
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;
}
最容易使用...
std::sort(arr, arr+n, [](int i, int j) { return abs(i) < abs(j); });
。并完全抛弃fun
。
如果你真的想要一个可重用的函数(而不是上面的"lambda"),请看一下这里的 cppreference 示例 - 特别是 customLess
。
bool fun(int i,int j)
{
return abs(i)<abs(j);
}
sort() 需要一些函数具有返回布尔类型并且它接受您的 int 函数,因为它可以假设如果它返回 0 它是假的,否则它是真的。你应该给它它是真的还是假的,然后让sort()功能来完成它的工作。例如,如果您更改了我上面显示的有趣功能,则 sort() 以绝对方式按升序为您提供输出。
实际上,我建议您,主要为这些排序函数使用lambda,实际上,如果您将它们放在自动变量中,则可以更轻松地调用它们。诸如此类
auto func=[](int i, int j) { return abs(i) < abs(j); };
std::sort(arr, arr+n, func);
PS(对不起,语言,这不是我的母语。
相关文章:
- 二叉排序树无法编译
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 如何对点云数据进行排序
- 对字符串进行排序时,在c++中处理sort()
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- 下面是排序算法O(n)吗
- std::sort()函数无法对向量的一部分进行排序
- shell排序中的交换和比较
- clang格式:禁用排序包含
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 试图在c++中对数字列表进行排序
- 使用 STL C++ 对数字 USIG 绝对值进行排序