如何在C/C++中对日期数组进行排序?

给定一系列日期,如何对它们进行排序。

null

例子:

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}}

我们强烈建议您尽量减少浏览器,并先自己尝试 其想法是使用内置函数 C++中的排序函数 .我们可以编写自己的比较函数,首先比较年、月、日。

下面是一个完整的C++程序。

// 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" ;
for ( int i=0; i<n; i++)
{
cout << arr[i].day << " " << arr[i].month
<< " " << arr[i].year;
cout << endl;
}
}


输出:

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

类似地,在C中,我们可以使用 qsort() 作用

相关问题: 如何有效地对20年代的大型日期列表进行排序

本文由 Dinesh T.P.D 。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请发表评论

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享