sort+结构体实现二级排序
之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法。
还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序,但是如果出现相同身高的情况,名字的拼音靠前的排在前面。
好,现在这个问题已经涉及到了二级排序,要按照身高的降序和姓名的升序排列,那么就要先定义一个结构体,将姓名和身高都包含进去,然后用sort对结构体排序,而实现二级排序,关键在于自己写的cmp函数(sort的比较方法)
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct Person
{
string name;
int hegh;
};
bool cmp(Person p1,Person p2)
{
if(p1.hegh>p2.hegh)//一级排序
{
return true;
}
else
{
if(p1.hegh==p2.hegh)
{
if(p1.name<p2.name)//二级排序
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
int main()
{
Person p[];
for(int i=;i<;i++)
{
cin>>p[i].name>>p[i].hegh;
}
cout<<"排序前:"<<endl;
for(int i=;i<;i++)
{
cout<<p[i].name<<" "<<p[i].hegh<<endl;
}
sort(p,p+,cmp);
cout<<"排序后:"<<endl;
for(int i=;i<;i++)
{
cout<<p[i].name<<" "<<p[i].hegh<<endl;
}
return ;
}

下面来个稍微复杂一点的应用
如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
实现以下接口:
输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照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;
}
sort+结构体实现二级排序的更多相关文章
- Java中如何实现类似C++结构体的二级排序
1:实现Comparable接口 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; ...
- Problem T: 结构体--学生信息排序
Problem T: 结构体--学生信息排序 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 2219 Solved: 1305[Submit][Sta ...
- YTU 2878: 结构体--学生信息排序
2878: 结构体--学生信息排序 时间限制: 1 Sec 内存限制: 128 MB 提交: 297 解决: 148 题目描述 定义存放一个学生信息的结构体类型,学生信息包括:姓名,学号,性别,院 ...
- 网上关于sort结构体排序都不完整,我来写一个完整版的 2014-08-09 16:50 60人阅读 评论(0) 收藏
主要参考sort函数_百度文库, 但是那篇有错误 2.结构体排序,a升,b降,c降 平板视图 打印? 01 #include <iostream> 02 #include <algo ...
- sort();对结构体数组的排序
sort(); 位于C++ 头文件 #include<algorithm>中 数组排序(从小到大,从大到小) 结构体排序(数字参数从大到小...字符串为参数 字典序....) 代码示例:( ...
- 洛谷P1068 分数线划定:sort结构体排序+贪心
题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试. 面试分数线根据计划录取人数的150%划定, ...
- B - EXCEL排序(sort+结构体)
Excel可以对一组纪录按任意指定列排序.现请你编写程序实现类似功能. Input测试输入包含若干测试用例.每个测试用例的第1行包含两个整数 N (<=100000) 和 C,其中 N 是纪录的 ...
- sort 结构体 正数负数分开排序
对于结构体排序的一点点记录,之前遇到过结构体排序,个人比较喜欢使用在结构体当中直接重载小于号的方法, 例如说: struct Node{ int index; int del; bool operat ...
- PAT A1075 PAT Judge (25 分)——结构体初始化,排序
The ranklist of PAT is generated from the status list, which shows the scores of the submissions. Th ...
随机推荐
- python学习小结8:I/O
文件I/O是Python中最重要的技术之一,在Python中对文件进行I/O操作是非常简单的. 打印到屏幕上 >>> print "python is really a g ...
- OC面向对象继承关系和组合关系笔记
继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法: 继承的关系特点描述出来就是:** “是” ** (例如:学生类 是 人类) 组合关系描述的语 ...
- C#在Winform中改变Textbox高度三种方法
最近在做C# Winform项目,需要有一个能动态调整大小的Textbox,并且要是单行的.试了几次,单行模式的Textbox不能直接改高度.于是搜索了一下,整理出几个改变高度的方法. 1.将Text ...
- Google history
传说,硅谷的公司在和微软的竞争中一直处于下风,不论在市场,人才,还是在打官司上,直到婴儿巨人Baby Giant谷歌的出现,历史才出现前所未有的改变.Google以一个强大的挑战者的身份出现在人们的视 ...
- 团队项目-smart原则
Smart原则 Specific ——明确性 所谓明确就是要用具体的语言清楚地说明要达成的行为标准.明确的目标几乎是所有成功团队的一致特点.很多团队不成功的重要原因之一就因为目标定的模棱两可,或没有将 ...
- 2208: [Jsoi2010]连通数 - BZOJ
Description Input 输入数据第一行是图顶点的数量,一个正整数N. 接下来N行,每行N个字符.第i行第j列的1表示顶点i到j有边,0则表示无边. Output 输出一行一个整数,表示该图 ...
- Eclipse 创建Maven工程
前言 开发环境 sts-3.7.2.RELEASE 创建步骤 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显示创 ...
- [BZOJ 1044] [HAOI2008] 木棍分割 【二分 + DP】
题目链接:BZOJ 1044 第一问是一个十分显然的二分,贪心Check(),很容易就能求出最小的最大长度 Len . 第二问求方案总数,使用 DP 求解. 使用前缀和,令 Sum[i] 为前 i 根 ...
- 【锋利的JQuery-学习笔记】输入框提示语-隐藏/显示
html <div class="search"> <input type="text" id="inputSearch" ...
- timeit统计运行时间
import timeitt1 = timeit.timeit('sum(x*x for x in xrange(10000))',number = 10000) print t1