Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

How to sort an array of dates in C/C++?

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given an array of dates, how to sort them.

Example:

Input:
       Date arr[] = {{20,  1, 2014},
                    {25,  3, 2010},
                    { 3, 12, 1676},
                    {18, 11, 1982},
                    {19,  4, 2015},
                    { 9,  7, 2015}}

Output:
      Date arr[] = {{ 3, 12, 1676},
                    {18, 11, 1982},
                    {25,  3, 2010},
                    {20,  1, 2014},
                    {19,  4, 2015},
                    { 9,  7, 2015}}

We strongly recommend you to minimize your browser and try this yourself first
The idea is to use in-built function to sort function in C++. We can write our own compare function that first compares years, then months, then days.

Below is a complete C++ program.




// C++ program to sort an array of dates
#include<bits/stdc++.h>
using namespace std;
  
// Structure for date
struct Date
{
    int day, month, year;
};
  
// This is the compare function used by the in-built sort
// function to sort the array of dates.
// It takes two Dates as parameters (const is
// given to tell the compiler that the value won't be
// changed during the compare - this is for optimization..)
  
// Returns true if dates have to be swapped and returns
// false if not. Since we want ascending order, we return
// true if the first Date is less than the second date
bool compare(const Date &d1, const Date &d2)
{
    // All cases when true should be returned
    if (d1.year < d2.year)
        return true;
    if (d1.year == d2.year && d1.month < d2.month)
        return true;
    if (d1.year == d2.year && d1.month == d2.month &&
                              d1.day < d2.day)
        return true;
  
    // If none of the above cases satisfy, return false
    return false;
}
  
// Function to sort array arr[0..n-1] of dates
void sortDates(Date arr[], int n)
{
    // Calling in-built sort function.
    // First parameter array beginning,
    // Second parameter - array ending,
    // Third is the custom compare function
    sort(arr, arr+n, compare);
}
  
// Driver Program
int main()
{
    Date arr[] = {{20,  1, 2014},
                  {25,  3, 2010},
                  { 3, 12, 1676},
                  {18, 11, 1982},
                  {19,  4, 2015},
                  { 9,  7, 2015}};
    int n = sizeof(arr)/sizeof(arr[0]);
  
    sortDates(arr, n);
  
    cout << "Sorted dates are\n";
    for (int i=0; i<n; i++)
    {
        cout << arr[i].day << " " << arr[i].month
             << " " << arr[i].year;
        cout << endl;
    }
}

Output:

Sorted dates are
3 12 1676
18 11 1982
25 3 2010
20 1 2014
19 4 2015
9 7 2015

Similarly in C, we can use qsort() function.

Related Problem:
How to efficiently sort a big list dates in 20’s

This article is contributed by Dinesh T.P.D. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above


My Personal Notes arrow_drop_up
Last Updated : 10 May, 2019
Like Article
Save Article
Similar Reads
Related Tutorials