给定日期数组, 如何对它们进行排序。
例子:
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。如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。
推荐阅读
- 如何在C++中使用STL对数组进行排序()
- 如何在C++中使用STL按降序对数组排序()
- 如何在C#中对数组排序Array.Sort()|S1
- 如何对链表进行排序,该列表按升序和降序交替排序()
- 如何对很多重复的大数组进行排序()
- 如何解决RSA算法问题()
- 12个免费数据恢复软件
- 总结描述TCP三次握手四次挥手
- 描述TCP和UDP区别