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

给定日期数组, 如何对它们进行排序。
例子:

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++中的排序功能
。我们可以编写自己的比较函数, 该函数首先比较年份, 然后比较几个月, 然后比较几天。
下面是一个完整的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\n" ; 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。如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。

    推荐阅读