วันที่ คือ เลขวัน เดือน ปี มีหลายวิธีในการแสดงวันที่
ที่นี่ เรามีโปรแกรมสำหรับจัดเรียงวันที่โดยใช้การเรียงลำดับการเลือก เรามาเรียนรู้เกี่ยวกับสิ่งต่าง ๆ ที่ใช้ในแนวคิดนี้กันเถอะ
การเรียงลำดับวันที่
แนวความคิดในการเรียงลำดับวันที่ต้องการความรู้ที่ชัดเจนและรอบรู้เกี่ยวกับวันที่และการตรวจสอบความถูกต้อง ก่อนที่เราจะลองใช้เทคนิคการเรียงลำดับ เราจำเป็นต้องตรวจสอบว่าวันที่ที่ป้อนโดยผู้ใช้เป็นวันที่ที่ถูกต้อง ไม่เหมือน 29-2 นั้นใช้ได้สำหรับปีอธิกสุรทินเท่านั้น
หลังจากตรวจสอบวันที่แล้ว การเรียงลำดับวันที่จะมาถึง สำหรับการเรียงลำดับ เราจะดำเนินการในปีของการเรียงลำดับแบบย้อนกลับ จากนั้นสำหรับเดือนที่เรียงลำดับในปีเดียวกัน และวันที่เรียงลำดับในเดือนเดียวกัน
การเรียงลำดับการเลือก
การเรียงลำดับการเลือกเป็นอัลกอริธึมการเรียงลำดับที่จัดเรียงองค์ประกอบโดยการค้นหาองค์ประกอบขั้นต่ำและวางไว้ที่จุดเริ่มต้นของอาร์เรย์แล้วย่ออาร์เรย์ให้สั้นลง ดังนั้นการวางแต่ละองค์ประกอบในตำแหน่งตามลำดับจากน้อยไปมาก
โปรแกรมนี้ใช้เทคนิคการเรียงลำดับการเลือกสำหรับการเรียงลำดับวันที่ที่ผู้ใช้ป้อน
ลองหาวันที่ในรูปแบบไม่เรียงลำดับกัน 3 วัน แล้วจึงจัดเรียงวันที่เหล่านี้
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