c++ sort numbers by magnitude/absolute value
To sort numbers by magnitude or absolute value in C++, you can follow these steps:
- Include the necessary header files:
#include <iostream>
#include <algorithm>
#include <cmath>
The <iostream>
header file is required for input/output operations, <algorithm>
is needed for sorting functions, and <cmath>
for the absolute value function.
- Define a comparison function:
bool compareByMagnitude(int a, int b) {
return std::abs(a) < std::abs(b);
}
This function takes two integers a
and b
as parameters and compares their absolute values using the std::abs()
function. It returns true
if the absolute value of a
is less than the absolute value of b
, and false
otherwise.
- Use the comparison function with the sorting algorithm:
int main() {
int numbers[] = { -5, 10, -3, 8, -1, 0 };
int size = sizeof(numbers) / sizeof(numbers[0]);
std::sort(numbers, numbers + size, compareByMagnitude);
for (int i = 0; i < size; i++) {
std::cout << numbers[i] << " ";
}
return 0;
}
In this example, we have an array of numbers. The std::sort()
function is used to sort the array in ascending order based on the absolute value of each element. The compareByMagnitude
function is passed as the third parameter, which specifies the custom comparison logic.
- Output the sorted numbers:
Output: 0 -1 -3 5 8 10
The sorted array is printed using a loop, and the numbers are separated by spaces.
By following these steps, you can successfully sort numbers by magnitude/absolute value in C++.