w3resource

C++ Exercises: Sort an array of distinct elements according to absolute difference of array elements and with a given value

C++ Array: Exercise-17 with Solution

Write a C++ program to sort (in descending order) an array of distinct elements according to absolute difference of array elements and with a given value.

Sample Solution:

C++ Code :

#include <iostream>
using namespace std;

void rearrange_array_elements(int nums[], int n, int x)
{
    multimap<int, int> m;
 
    for (int i = 0 ; i < n; i++)
        m.insert(make_pair(abs(x-nums[i]),nums[i]));

    int i = 0;
    for (auto t = m.begin(); t != m.end(); t++)
        nums[i++] = (*t).second ;
}
 
 
int main()
{
    int nums[] = {0, 9, 7, 2, 12, 11, 20}; 
    int n = sizeof(nums)/sizeof(nums[0]);
   cout << "Original array: ";
   int x = 12;
    for (int i=0; i < n; i++) 
    cout << nums[i] <<" ";
    rearrange_array_elements(nums, n, x);
 
    printf("\nArray elements after rearrange: ");
      for (int i=0; i < n; i++) 
      cout << nums[i] <<" ";
        return 0;
      
}

Sample Output:

Original array: 0 9 7 2 12 11 20 
Array elements after rearrange: 12 11 9 7 20 2 0     

Flowchart:

Flowchart: Sort an array of distinct elements according to absolute difference of array elements and with a given value

C++ Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a C++ program to sort a given array of 0s, 1s and 2s. In the final array put all 0s first, then all 1s and all 2s in last.
Next: Write a C++ program to move all negative elements of an array of integers to the end of the array without changing the order of positive element and negative element.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Share this Tutorial / Exercise on : Facebook and Twitter

C++ Programming: Tips of the Day

Can I assume (bool)true == (int)1 for any C++ compiler?

According to the standard, you should be safe with that assumption. The C++ bool type has two values - true and false with corresponding values 1 and 0.

The thing to watch about for is mixing bool expressions and variables with BOOL expression and variables. The latter is defined as FALSE = 0 and TRUE != FALSE, which quite often in practice means that any value different from 0 is considered TRUE.

A lot of modern compilers will actually issue a warning for any code that implicitly tries to cast from BOOL to bool if the BOOL value is different than 0 or 1

Ref: https://bit.ly/3PWhs5N