sort+結構體實現二級排序

以前介紹的sort函數因爲其效率較高,使用較爲簡單讓我用起來那叫一個爽,今天再寫一篇使用sort+結構體實現二級排序的方法。ios

仍是先想個問題吧,好比我想輸入5個同窗的名字和身高,而後獲得他們身高的降序,可是若是出現相同身高的狀況,名字的拼音靠前的排在前面。函數

好,如今這個問題已經涉及到了二級排序,要按照身高的降序和姓名的升序排列,那麼就要先定義一個結構體,將姓名和身高都包含進去,而後用sort對結構體排序,而實現二級排序,關鍵在於本身寫的cmp函數(sort的比較方法)spa

 1 #include<iostream>
 2 #include<string>
 3 #include<algorithm>
 4 using namespace std;
 5 struct Person
 6 {
 7     string name;
 8     int hegh;
 9 };
10 bool cmp(Person p1,Person p2)
11 {
12     if(p1.hegh>p2.hegh)//一級排序
13     {
14         return true;
15     }
16     else
17     {
18         if(p1.hegh==p2.hegh)
19         {
20             if(p1.name<p2.name)//二級排序
21             {
22                 return true;
23             }
24             else
25             {
26                 return false;
27             }
28         }
29         else
30         {
31             return false;
32         }
33     }
34 }
35 int main()
36 {
37     Person p[5];
38     for(int i=0;i<5;i++)
39     {
40         cin>>p[i].name>>p[i].hegh;
41     }
42     cout<<"排序前:"<<endl;
43     for(int i=0;i<5;i++)
44     {
45         cout<<p[i].name<<" "<<p[i].hegh<<endl;
46     }
47     sort(p,p+5,cmp);
48     cout<<"排序後:"<<endl;
49     for(int i=0;i<5;i++)
50     {
51         cout<<p[i].name<<" "<<p[i].hegh<<endl;
52     }
53     return 0;
54 }

下面來個稍微複雜一點的應用code

若是統計的個數相同,則按照ASII碼由小到大排序輸出 。若是有其餘字符,則對這些字符不用進行統計。blog

實現如下接口:
輸入一個字符串,對字符中的各個英文字符,數字,空格進行統計(可反覆調用)
按照統計個數由多到少輸出統計結果,若是統計的個數相同,則按照ASII碼由小到大排序輸出
清空目前的統計結果,從新統計排序

思路:先構造hash表統計字符出現的次數,而後對hash表進行二級排序接口

#include<iostream>
#include<string>
using namespace std; int main() { int num; string str; string s; cin>>num; while(num-->0) { cin>>s; if(!str.empty()) { str=str+s; } else { str=s; } if(str.length()==8) { cout<<str<<endl; str.clear(); } else if(str.length()<8) { str.insert(str.length(),8-str.length(),'0'); cout<<str<<endl; str.clear(); } else if(str.length()>8) { cout<<str.substr(0,8)<<endl; str=str.substr(8,str.length()-8); break; } } if(!str.empty()) { str.insert(str.length(),8-str.length(),'0'); cout<<str<<endl; } return 0; }
相關文章
相關標籤/搜索