使用选择排序对日期进行排序的 C++ 程序
日期是指数字日期、月份和年份。有多种方法可以显示日期。
这里,我们有一个使用选择排序对日期进行排序的程序。所以让我们了解一下在这个概念中使用到的东西。
日期排序
日期排序的概念需要对日期及其验证有清晰而透彻的了解。在我们尝试排序技术之前,我们需要检查用户输入的日期是否有效,例如 29-2 仅在闰年有效。
在日期验证之后是日期排序。对于排序,我们将按照相反的顺序排序年份,然后对于相同年份排序月份,然后对于相同月份排序日期。
选择排序
选择排序是一种排序算法,它通过找到最小元素并将其放置在数组的开头,然后缩短数组来对元素进行排序。因此,将每个元素按升序放置在其相应的位置。
此程序使用选择排序技术对用户输入的日期进行排序。
让我们以无序形式取三个日期,然后对这些日期进行排序。
Input : 4 1 2012 31 5 2019 19 12 2012 Output : 4 1 2012 19 12 2012 31 5 2019
解释
由于所有日期均有效,程序将对这些日期进行排序并按升序排序。
示例
#include<iostream>
using namespace std;
struct date{
int day;
int month;
int year;
int valid = 1;
};
int datevalidate(int dd, int mm, int yy){
if(yy>=100 && yy<=9999){
if(mm>=1 && mm<=12){
if((dd>=1 && dd<=31) && (mm==1 || mm==3 || mm==5 || mm==7 || mm==8 || mm==10 || mm==12));
else if((dd>=1 && dd<=30) && (mm==4 || mm==6 || mm==9 || mm==11));
else if((dd>=1 && dd<=28) && (mm==2));
else if(dd==29 && mm==2 && (yy%400==0 ||(yy%4==0 && yy%100!=0)));
else
return 0;
} else{
return 0;
}
} else {
return 0;
}
}
int main(){
cout<<"Enter 5 dates to be sorted:\n";
struct date input[5];
for(int i=0; i<5; i++){
cout<<"Enter Date "<<(i+1)<<" : ";
cin>>input[i].day;
cin>>input[i].month;
cin>>input[i].year;
input[i].valid = datevalidate(input[i].day, input[i].month, input[i].year);
if(input[i].valid){
cout<<"Date is invalid";
exit(0);
}
}
for (int i=0; i<4; i++){
for (int j=i+1; j<5; j++){
if (input[i].year > input[j].year){
struct date temp = input[i];
input[i] = input[j];
input[j] = temp;
}
else if (input[i].year == input[j].year && input[i].month > input[j].month){
struct date temp = input[i];
input[i] = input[j];
input[j] = temp;
}
else if (input[i].year == input[j].year && input[i].month == input[j].month && input[i].day > input[j].day){
struct date temp = input[i];
input[i] = input[j];
input[j] = temp;
}
}
}
cout<<"Sorted dates are : \n";
for(int i=0; i<5; i++){
cout<<input[i].day<<" "<<input[i].month<<" "<<input[i].year;
cout<<endl;
}
}输出
Enter 5 dates to be sorted: Enter date 1 : 5 12 2019 Enter date 2 : 1 2 2012 Enter date 3 : 11 6 2324 Enter date 4 : 29 2 2652 Enter date 5 : 16 5 2012 Sorted dates are : 1 2 2012 16 5 2012 5 12 2019 11 6 2324 29 2 2652
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP