使用C++里自带的sort函数排序

sort函数是C++中自带的排序函数,包含在头文件 #include<algorithm> 的C++标准库中。

 

用sort函数排序比冒泡之类的算法效率要高

功能:对给定区间的所有元素进行排序,默认为升序,也可进行降序

   可以直接对数组进行排序

 

SYNTAX:

     sort(start, end, cmp);

start为数组的起始地址

end为数组结束地址的下一位

cmp为排序方式,可不填,默认升序

 

例:对年月日时间进行排序

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 class Date
 5 {
 6     public:
 7     int year;
 8     int month;
 9     int day;
10     int hour;
11     int startminute;
12     int endminute;
13 };
14 
15 int main()
16 {
17     Date arry[100];
18     void display(Date arry[], int n);
19     int n;
20     int i;
21     cout << "Please input the number of the date" << endl;
22     cin >> n;
23     cout << "Please enter year,month,day,hour,startminute,endminute in order" << endl;
24     for (i = 0; i < n; i++)
25     {
26             cin >> arry[i].year
27                 >> arry[i].month
28                 >> arry[i].day
29                 >> arry[i].hour
30                 >> arry[i].startminute
31                 >> arry[i].endminute;
32     }
33     display(arry, n);
34     return 0;
35 }
36 void display(Date arry[], int n)
37 {
38     int compare(Date a, Date b);
39     int i;
40     sort(arry, arry + n, compare);
41     cout << "Here are all the sorted date:" << endl;
42     for (i = 0; i < n; i++)
43     {
44         cout << "start time(" << arry[i].year << "/" << arry[i].month << "/" << "/" << arry[i].day;
45         cout << " " << arry[i].hour << ":" << arry[i].startminute << ") - ";
46         cout << "end time(" << arry[i].year << "/" << arry[i].month << "/" << "/" << arry[i].day;
47         cout << " " << arry[i].hour << ":" << arry[i].endminute << ")" << endl;
48         cout << "------------------------------------------" << endl;
49 
50     }
51 }
52 
53 int compare(Date a, Date b)
54 {
55     if (a.year == b.year)
56     {
57         if (a.month == b.month)
58         {
59             if (a.day == b.day)
60             {
61                 if(a.hour == b.hour)
62                 {
63                     return a.startminute<b.startminute;
64                 }
65                 else
66                 {
67                     return a.hour < b.hour;
68                 }
69             }
70             else
71             {
72                 return a.day < b.day;
73             }
74 
75         }
76         else
77         {
78             return a.month < b.month;
79         }
80     }
81     else
82     {
83         return a.year < b.year;
84     }
85 }

 

ps: 新手初学C++

 

posted @ 2020-04-29 21:28  inss!w!  阅读(1186)  评论(0编辑  收藏  举报