w3resource

C++ Exercises: Sort a given unsorted array of integers, in wave form


9. Wave Form Sorting of an Array

Write a C++ program to sort a given unsorted array of integers, in wave form.
Note: An array is in wave form when array[0] >= array[1] <= array[2] >= array[3] <= array[4] >= . . . .

Sample Solution:

C++ Code :

#include<iostream> // Header file for input/output stream
#include<algorithm> // Header file for using algorithms like sort
using namespace std; // Using the standard namespace

void swap_elements(int *a, int *b)
{
    int t = *a; // Temporary variable to store the value at pointer a
    *a = *b; // Assigning the value at pointer b to pointer a
    *b = t; // Assigning the value in the temporary variable to pointer b
}

void array_wave(int nums[], int n)
{
    sort(nums, nums+n); // Sorting the array in ascending order using the sort function

    // Loop to create the wave pattern in the array
    for (int i = 0; i < n - 1; i += 2)
        swap_elements(&nums[i], &nums[i+1]); // Swapping adjacent elements to create the wave pattern
}

int main()
{
    int nums[] = {4, 5, 9, 12, 9, 22, 45, 7}; // Declaration and initialization of an integer array
    int n = sizeof(nums) / sizeof(nums[0]); // Calculating the number of elements in the array
    cout << "Original array: ";
    for (int i = 0; i < n; i++)
        cout << nums[i] << " "; // Outputting each element of the array
    array_wave(nums, n); // Calling the function to create a wave pattern in the array
    cout << "\nWave form of the said array: ";
    for (int i = 0; i < n; i++)
       cout << nums[i] << " "; // Outputting each element of the modified array in a wave pattern
    return 0;
}

Sample Output:

Original array: 4 5 9 12 9 22 45 7 
Wave form of the said array: 5 4 9 7 12 9 45 22 

Flowchart:

Flowchart: Sort a given unsorted array of integers, in wave form

For more Practice: Solve these Related Problems:

  • Write a C++ program to sort an array in wave form by first sorting the array and then swapping adjacent pairs.
  • Write a C++ program that rearranges an unsorted array into a wave pattern by iterating with a for loop and swapping elements.
  • Write a C++ program to transform an array into a wave form without using extra space by modifying it in place.
  • Write a C++ program that reads an array and outputs it in wave form using a single pass approach after sorting.

Go to:


PREV : Next Greater Element for Every Array Element.
NEXT : Smallest Missing Element in a Sorted Array.

C++ Code Editor:



Contribute your code and comments through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.